package pe.gob.osinergmin.interfase_siaf.dac.ingreso.service.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import pe.gob.osinergmin.interfase_siaf.dac.bean.IntfCabIngresoBean;
import pe.gob.osinergmin.interfase_siaf.dac.bean.IntfDet09IngresoBean;
import pe.gob.osinergmin.interfase_siaf.dac.bean.IntfNotBean;
import pe.gob.osinergmin.interfase_siaf.dac.domain.interfase.IntfCab;
import pe.gob.osinergmin.interfase_siaf.dac.domain.interfase.IntfDet09;
import pe.gob.osinergmin.interfase_siaf.dac.domain.interfase.IntfNot;
import pe.gob.osinergmin.interfase_siaf.dac.ingreso.dao.IngresoDao;
import pe.gob.osinergmin.interfase_siaf.dac.ingreso.service.IngresoService;
import pe.gob.osinergmin.interfase_siaf.dac.ingreso.service.ValidacionIngresoService;
import pe.gob.osinergmin.interfase_siaf.dac.util.Constantes;
import pe.gob.osinergmin.interfase_siaf.dac.util.FechasUtil;

@Service("ingresoService")
public class IngresoServiceImpl implements IngresoService {
	
	private final Log logger = LogFactory.getLog(getClass());
	public static final String CODIGO_VERIFICACION_OK ="1";
	public static final String CODIGO_VERIFICACION_ERROR ="0";
	
	@Autowired
	private IngresoDao ingresoDao;
	
	@Autowired
	private ValidacionIngresoService validacionIngresoService;
	
		
	@Override
	public String insertDatosIngresos(Map<String, Object> params) throws Exception {
		logger.info("Ingresando a registrar datos de ingresos validando ciclo y fase"); 
		String mensaje = CODIGO_VERIFICACION_OK+"/"+"";
	    try {
	    	//Parametros
	    	String ciclo = (String) params.get("ciclo");
			String fase = (String) params.get("fase");
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");    	
			
			if(StringUtils.isBlank(ciclo)){ 			     
			      mensaje = Constantes.COD_CICLO_PARAMETRO_NULO+"/"+
					        Constantes.CICLO_PARAMETRO_NULO;
			}else if(!Constantes.CICLO_INGRESO.equalsIgnoreCase(ciclo)){ 			    
			      mensaje = Constantes.COD_CICLO_PARAMETRO_VALIDO+"/"+
					        Constantes.CICLO_PARAMETRO_VALIDO;
			}else if(StringUtils.isBlank(fase)){ 				
				  mensaje = Constantes.COD_FASE_PARAMETRO_NULO+"/"+
					        Constantes.FASE_PARAMETRO_NULO;
			}else{
				 if(Constantes.FASE_INGRESO_D.equalsIgnoreCase(fase)){ 
					 //implementacion de estados de determinado
					 if(StringUtils.isNoneBlank(cabBean.getEstado())){ 
						if(Constantes.DETERMINADO_AMPLIACION.equals(cabBean.getEstado())){ 
							  logger.info("Ingresando a ampliacion");
							 mensaje = insertDatosIngresosDAmpliacion(ciclo,fase,params);	
						}else if(Constantes.DETERMINADO_REBAJA.equals(cabBean.getEstado())){
							logger.info("Ingresando a rebaja");
							mensaje = insertDatosIngresosDRebaja(ciclo,fase,params); 	
						}else if(Constantes.DETERMINADO_ANULACION.equals(cabBean.getEstado())){
							logger.info("Ingresando a anulacion");
							mensaje = insertDatosIngresosDAnuXError(ciclo,fase,params); 	
						}else if(Constantes.DETERMINADO_ANULAION_ERROR.equals(cabBean.getEstado())){
							logger.info("Ingresando a anulacion por errror");
							mensaje = insertDatosIngresosDAnuXError(ciclo,fase,params); 	
						}else{						 
						 mensaje =  Constantes.COD_ESTADO_OPERACION_INGRESO+"/"+
							        Constantes.ESTADO_OPERACION_INGRESO;
						}						 
					  }else{
						  logger.info("Ingresando a determinado nuevo");
						  mensaje = insertDatosIngresosD(ciclo,fase,params); 						
					  }						 
				}else if(Constantes.FASE_INGRESO_R.equalsIgnoreCase(fase)){ 
					 //implementacion de estados de recaudado
					  if(StringUtils.isNoneBlank(cabBean.getEstado())){ 
						if(Constantes.RECAUDADO_DEVOLUCION.equals(cabBean.getEstado())){ 
							  logger.info("Ingresando a devolucion");
							 mensaje = insertDatosIngresosRDevolucion(ciclo,fase,params); 	
						}else if(Constantes.RECAUDADO_REBAJA.equals(cabBean.getEstado())){
							logger.info("Ingresando a rebaja");
							mensaje = insertDatosIngresosRRebaja(ciclo,fase,params);	
						}else if(Constantes.RECAUDADO_ANULACION.equals(cabBean.getEstado())){
							logger.info("Ingresando a anulacion");
							mensaje = insertDatosIngresosRAnulado(ciclo,fase,params); 	
						}else if(Constantes.RECAUDADO_ANULAION_ERROR.equals(cabBean.getEstado())){
							logger.info("Ingresando a anulacion por errror");
							mensaje = insertDatosIngresosRAnulado(ciclo,fase,params); 	
						}else{
							 mensaje =  Constantes.COD_ESTADO_OPERACION_INGRESO+"/"+
								        Constantes.ESTADO_OPERACION_INGRESO;
						}						 
					  }else{
						   logger.info("Ingresando a recaudado nuevo");
						   mensaje = insertDatosIngresosR(ciclo,fase,params);						  
					  }						 
				}else{					 
					 mensaje = Constantes.COD_FASE_PARAMETRO_VALIDO+"/"+
						       Constantes.FASE_PARAMETRO_VALIDO;
				}
		  }    	
		} catch (Exception e) {
			logger.info("Error al grabar datos de Ingreso"+e);			
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}		
	 return mensaje;	
	}	
	
	
	/*****INGRESOS DE DATOS DETERMINADO (I-D)*********************/	
	private String  insertDatosIngresosD(String ciclo,String fase,Map<String, Object> params) throws Exception {
		logger.info("Ingresando a grabar datos de ingresos Determinado"); 
		String mensaje = CODIGO_VERIFICACION_OK+"/"+"";
		boolean valorCab = false;
		boolean valorDet =false;
		boolean valorNot =false;
		IntfCab i = new IntfCab();
		List<IntfDet09> listaDet09 =null;
		IntfDet09 det = null;
		List<String> listaIdClasif=null;
		IntfNot n = new IntfNot();
		try {
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");   
			@SuppressWarnings("unchecked")
			List<IntfDet09IngresoBean> detLista09 = (List<IntfDet09IngresoBean>) params.get("det");			
			IntfNotBean notBean = (IntfNotBean) params.get("not");
			
		   /**GRABANDO EN INTF_CAB**/
			if(!validarNulo(cabBean.getSecuencial())){ 
			     mensaje = Constantes.COD_SECUENCIAL_INTFCAB_NULO+"/"+
			    		   Constantes.SECUENCIAL_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getAno_eje())){ 
				 mensaje = Constantes.COD_ANIO_EJE_INTFCAB_NULO+"/"+
			               Constantes.ANIO_EJE_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getSec_ejec())){ 
				 mensaje = Constantes.COD_SEC_EJEC_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_ejec2())){ 
				 mensaje = Constantes.COD_SEC_EJEC2_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC2_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getMes_eje())){ 
				 mensaje = Constantes.COD_MES_EJE_INTFCAB_NULO+"/"+
				           Constantes.MES_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getTipo_ope())){ 
				 mensaje = Constantes.COD_TIPO_OPE_INTFCAB_NULO+"/"+
						   Constantes.TIPO_OPE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getMod_comp())){ 
				 mensaje = Constantes.COD_MOD_COMP_INTFCAB_NULO+"/"+
						   Constantes.MOD_COMP_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_area())){ 
				 mensaje = Constantes.COD_SEC_AREA_INTFCAB_NULO+"/"+
				           Constantes.SEC_AREA_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCiclo())){ 
				 mensaje = Constantes.COD_CICLO_INTFCAB_NULO+"/"+
				           Constantes.CICLO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFase())){ 
				 mensaje = Constantes.COD_FASE_INTFCAB_NULO+"/"+
				           Constantes.FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCod_doc())){ 
				 mensaje = Constantes.COD_COD_DOC_INTFCAB_NULO+"/"+
				           Constantes.COD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSerie_doc())){ 
				mensaje = Constantes.COD_SERIE_DOC_INTFCAB_NULO+"/"+
				          Constantes.SERIE_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getNum_doc())){ 
				mensaje = Constantes.COD_NUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.NUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FEC_DOC_INTFCAB_NULO+"/"+
						  Constantes.FEC_DOC_INTFCAB_NULO;	
		    }else if(!FechasUtil.isFechaValida(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FECDOC_INTFCAB_NO_VALIDO+"/"+
						  Constantes.FECDOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getM_fecha())){ 
				mensaje = Constantes.COD_M_FECHA_INTFCAB_NULO+"/"+
				          Constantes.M_FECHA_INTFCAB_NULO;		
		    }else if(!FechasUtil.isFechaValida(cabBean.getM_fecha())){ 
				mensaje = Constantes.COD_M_FECHA_INTFCAB_NO_VALIDO+"/"+
						  Constantes.M_FECHA_INTFCAB_NO_VALIDO;	
		    }else if(!validarNulo(cabBean.getTipo_id())){ 
				mensaje = Constantes.COD_TIPO_ID_INTFCAB_NULO+"/"+
				          Constantes.TIPO_ID_INTFCAB_NULO;
		    }else if(!validarNulo(cabBean.getRuc())){ 
				mensaje = Constantes.COD_RUC_INTFCAB_NULO+"/"+
						  Constantes.RUC_INTFCAB_NULO;
		    }else if((cabBean.getRuc().length()!=11)){ 
				mensaje = Constantes.COD_RUC_INTFCAB_NO_VALIDO+"/"+	
				          Constantes.RUC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getOrigen())){ 
				mensaje = Constantes.COD_ORIGEN_INTFCAB_NULO+"/"+
				          Constantes.ORIGEN_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFte_fin())){ 
				mensaje = Constantes.COD_FTE_FIN_INTFCAB_NULO+"/"+
						  Constantes.FTE_FIN_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getTipo_fin())){ 
				mensaje = Constantes.COD_TIPO_FIN_INTFCAB_NULO+"/"+
				          Constantes.TIPO_FIN_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getT_pago())){ 
				mensaje = Constantes.COD_T_PAGO_INTFCAB_NULO+"/"+
				          Constantes.T_PAGO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getT_recurs())){ 
				mensaje = Constantes.COD_T_RECURS_INTFCAB_NULO+"/"+
				          Constantes.T_RECURS_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getT_compro())){ 
				mensaje = Constantes.COD_T_COMPRO_INTFCAB_NULO+"/"+	
				          Constantes.T_COMPRO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getMoneda())){ 
				mensaje = Constantes.COD_MONEDA_INTFCAB_NULO+"/"+
				          Constantes.MONEDA_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getT_cambio())){ 
				mensaje = Constantes.COD_T_CAMBIO_INTFCAB_NULO+"/"+	
				          Constantes.T_CAMBIO_INTFCAB_NULO;
			}else if(!esDecimal(cabBean.getT_cambio())){ 
				mensaje = Constantes.COD_T_CAMBIO_INTFCAB_NO_VALIDO+"/"+
				          Constantes.T_CAMBIO_INTFCAB_NO_VALIDO;
			}else if(validarNegativo(cabBean.getT_cambio())){ 
				mensaje = Constantes.COD_T_CAMBIO_INTFCAB_NO_NEGATIVO+"/"+
				          Constantes.T_CAMBIO_INTFCAB_NO_NEGATIVO;
			}else if(!validarNulo(cabBean.getUe_envio())){ 
				mensaje = Constantes.COD_UE_ENVIO_INTFCAB_NULO+"/"+	
				          Constantes.UE_ENVIO_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getUe_estado())){ 
				mensaje = Constantes.COD_UE_ESTADO_INTFCAB_NULO+"/"+
				          Constantes.UE_ESTADO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getEstado_reg())){ 
				mensaje = Constantes.COD_ESTADO_REG_INTFCAB_NULO+"/"+
				          Constantes.ESTADO_REG_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDato_ori())){ 
				mensaje = Constantes.COD_DATO_ORI_INTFCAB_NULO+"/"+	
				          Constantes.DATO_ORI_INTFCAB_NULO;	
			}else if(!cabBean.getFase().equals(fase)){  
				mensaje = Constantes.COD_FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO+"/"+
				          Constantes.FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO;
			}else if(!cabBean.getCiclo().equals(ciclo)){  
				mensaje = Constantes.COD_CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO+"/"+
				          Constantes.CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO;
			}else{								
				i.setSecuencial(cabBean.getSecuencial());
				i.setAnoEje(cabBean.getAno_eje());
				i.setSecEjec(cabBean.getSec_ejec());
				i.setSecEjec2(cabBean.getSec_ejec2());
				i.setMesEje(cabBean.getMes_eje());
				i.setTipoOpe(cabBean.getTipo_ope());
				i.setModComp(cabBean.getMod_comp());
				i.setSecArea(cabBean.getSec_area());
				i.setCiclo(cabBean.getCiclo());
				i.setFase(cabBean.getFase()); 
				i.setCodDoc(cabBean.getCod_doc());
				i.setSerieDoc(cabBean.getSerie_doc());
				i.setNumDoc(cabBean.getNum_doc());			
				//parseando la fechadoc
				logger.info("fecha de doc ingresaod:" +cabBean.getFec_doc()); 
				Date fechaDoc = FechasUtil.getFechaStringToDate(cabBean.getFec_doc());
				logger.info("Fecha de doc convertida a date determinado nuevo: "+fechaDoc);		
				i.setFecDoc(fechaDoc);		
				Date mfecha = FechasUtil.getFechaStringToDate(cabBean.getM_fecha());
				i.setmFecha(mfecha); 
				i.setTipoId(cabBean.getTipo_id());
				i.setRuc(cabBean.getRuc());
				i.setOrigen(cabBean.getOrigen());
				i.setFteFin(cabBean.getFte_fin());
				i.setTipoFin(cabBean.getTipo_fin());
				i.settPago(cabBean.getT_pago()); 
				i.settRecurs(cabBean.getT_recurs());
				i.settCompro(cabBean.getT_compro()); 
				i.setMoneda(cabBean.getMoneda());
				if(validarNulo(cabBean.getT_cambio())){ 
					i.settCambio(Double.valueOf(cabBean.getT_cambio())); 	
				}else{
					i.settCambio(null); 		
				}				
				i.setUeEnvio(cabBean.getUe_envio());
				i.setUeEstado(cabBean.getUe_estado());
				i.setIntfExp("");
				i.setEstadoReg(cabBean.getEstado_reg()); 
				i.setDatoOri(cabBean.getDato_ori()); 	
				//datos adicionales para determinado ampliacioa,etc
				i.setEstado("");
				i.setIntfFase("");
				i.setIntfSec("");
				i.setIntfCor(""); 
				valorCab = true;
			}				
			 /**GRABANDO EN INTF_DET09**/
			
			if(valorCab){	
				listaIdClasif = new ArrayList<String>();
				listaDet09 = new ArrayList<IntfDet09>();
				for(IntfDet09IngresoBean d: detLista09){
					det = new IntfDet09();					
					if(!validarNulo(d.getSecuencial())){ 
						mensaje = Constantes.COD_SECUENCIAL_INTF_DET09_NULO+"/"+
						          Constantes.SECUENCIAL_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getId_clasifi())){ 
						mensaje = Constantes.COD_ID_CLASIFI_INTF_DET09_NULO+"/"+
						          Constantes.ID_CLASIFI_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv1())){ 
						mensaje = Constantes.COD_CLASIFNIV1_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV1_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv2())){ 
						mensaje = Constantes.COD_CLASIFNIV2_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV2_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv3())){ 
						mensaje = Constantes.COD_CLASIFNIV3_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV3_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv4())){ 
						mensaje = Constantes.COD_CLASIFNIV4_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV4_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv5())){ 
						mensaje = Constantes.COD_CLASIFNIV5_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV5_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv6())){ 
						mensaje = Constantes.COD_CLASIFNIV6_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV6_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NO_VALIDO+"/"+
						          Constantes.MONTO_INTF_DET09_NO_VALIDO;
						break;
					}else if(validarNegativo(d.getMonto())){ 
					    mensaje = Constantes.COD_MONTO_INTF_DET09_NO_NEGATIVO+"/"+
					              Constantes.MONTO_INTF_DET09_NO_NEGATIVO;
					    break;
				    }else if(!validarNulo(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_MN_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_VALIDO+"/"+	
						          Constantes.MONTO_MN_INTF_DET09_NO_VALIDO;	
						break;
					}else if(validarNegativo(d.getMonto_mn())){ 
					    mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_NEGATIVO+"/"+
					              Constantes.MONTO_MN_INTF_DET09_NO_NEGATIVO;
					    break;
				    }else{								
						det.setSecuencial(d.getSecuencial()); 
						det.setIdClasifi(d.getId_clasifi());
						det.setClasifniv1(d.getClasifniv1());
						det.setClasifniv2(d.getClasifniv2());
						det.setClasifniv3(d.getClasifniv3());
						det.setClasifniv4(d.getClasifniv4());
						det.setClasifniv5(d.getClasifniv5());
						det.setClasifniv6(d.getClasifniv6()); 
						det.setSecFunc(""); 
						det.setClasif2n1("");
						det.setClasif2n2(""); 
						det.setClasif2n3(""); 
						det.setClasif2n4(""); 
						det.setClasif2n5(""); 
						det.setClasif2n6(""); 
						det.setIdClasif2(""); 
						if(validarNulo(d.getMonto())){
							det.setMonto(Double.valueOf(d.getMonto())); 	
						}else{
							det.setMonto(null);	
						}
	                    if(validarNulo(d.getMonto_mn())){
	                    	det.setMontoMn(Double.valueOf(d.getMonto_mn()));  	
						}else{
							det.setMontoMn(null); 	
						}				
						det.setDatoOri(d.getDato_ori()); 
						valorDet = true;		
					}
					listaIdClasif.add(d.getId_clasifi());
					listaDet09.add(det);
				}//fin del for			
			}
			
			/**varificando idclasificar en el detalle**/			
			if(valorDet && listaDet09.size()>1){
				logger.info("Ingresando a verificar idClasificador: "); 
				Collections.sort(listaIdClasif);
				String idClasif = "";
				for(int j=0;j<listaIdClasif.size();j++){
					logger.info("verificar idClasificador: "+listaIdClasif.get(j)); 
					if(idClasif.equals(listaIdClasif.get(j))){ 
						valorDet = false;	
						mensaje = Constantes.COD_ID_CLASIFICADOR_DET09_REPETIDO+"/"+
						          Constantes.ID_CLASIFICADOR_DET09_REPETIDO; 
						break;
					}else{
						idClasif = listaIdClasif.get(j);						
					}					
				}
			}			
			
			/**GRABANDO EN INTF_NOT**/
			if(valorCab && valorDet ){
				if(!validarNulo(notBean.getSecuencial())){ 
					mensaje = Constantes.COD_SECUENCIAL_INTF_NOT_NULO+"/"+
					          Constantes.SECUENCIAL_INTF_NOT_NULO;
				}else if(!validarNulo(notBean.getCorrelativ())){ 
					mensaje = Constantes.COD_CORRELATIVO_INTF_NOT_NULO+"/"+
					          Constantes.CORRELATIVO_INTF_NOT_NULO;
				}else if(!validarNulo(notBean.getNota())){ 
					mensaje = Constantes.COD_NOTA_INTF_NOT_NULO+"/"+
					          Constantes.NOTA_INTF_NOT_NULO;
				}else{							
					n.setSecuencial(notBean.getSecuencial());
					n.setCorrelativ(notBean.getCorrelativ());
					n.setNota(notBean.getNota());
					n.setDatoOri(notBean.getDato_ori()); 
					valorNot = true;		
				}				
			}
			if(valorCab && valorDet && valorNot){
				Map<String, Object> paramts = new HashMap<String, Object>();				
				paramts.put("intfCab", i);
				paramts.put("listaDet", listaDet09);				
				paramts.put("intfNot", n);					
				//validando campos de las interfases
				String mensajeID = validacionIngresoService.validarIngresosD(paramts);
				String[] msnId = mensajeID.split("/");
				if(CODIGO_VERIFICACION_OK.equals(msnId[0])) {
					//validando el estado de cierre del periodo
					String estado = validacionIngresoService.validarEstadoCierre(i.getAnoEje(), 
							i.getSecEjec(), i.getSecArea(), i.getMesEje());
					String[] msnEstado = estado.split("/");
					if(CODIGO_VERIFICACION_OK.equals(msnEstado[0])){ 
						 ingresoDao.insertarIngresosDeterminado(paramts);
					}else{
						mensaje = estado;
					}								
				}else{
					mensaje = mensajeID;					
				}			
			}			
		} catch (Exception e) {
			logger.info("Error al grabar datos de los ingresos Determinado: "+e);		
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}finally{
			if(i!=null){
				i =null;			
			}
			if(listaDet09!=null){				
				listaDet09 = null;				
			}
			if(n!=null){			
				n= null;
			}
			if(det!=null){			
				det= null;
			}
			if(listaIdClasif!=null){			
				listaIdClasif= null;
			}
		}
		return mensaje;
	}
	
	/**DETERMINADO - AMPLIACION*/
	
	private String  insertDatosIngresosDAmpliacion(String ciclo,String fase,Map<String, Object> params) throws Exception {
		logger.info("Ingresando a grabar datos de ingresos Determinado-Ampliacion"); 
		String mensaje = CODIGO_VERIFICACION_OK+"/"+"";
		boolean valorCab = false;
		boolean valorDet =false;		
		IntfCab i = new IntfCab();
		List<IntfDet09> listaDet09 = null;
		List<String> listaIdClasif=null;
		IntfDet09 det = null;
		IntfNot n=null;
		try {	
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");   
			@SuppressWarnings("unchecked")
			List<IntfDet09IngresoBean> detLista09 = (List<IntfDet09IngresoBean>) params.get("det");
		   /**GRABANDO EN INTF_CAB**/	
			if(!validarNulo(cabBean.getSecuencial())){ 
				mensaje = Constantes.COD_SECUENCIAL_INTFCAB_NULO+"/"+
			    		   Constantes.SECUENCIAL_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getAno_eje())){ 
				mensaje = Constantes.COD_ANIO_EJE_INTFCAB_NULO+"/"+
			               Constantes.ANIO_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_ejec())){ 
				 mensaje = Constantes.COD_SEC_EJEC_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getCiclo())){ 
				 mensaje = Constantes.COD_CICLO_INTFCAB_NULO+"/"+
				           Constantes.CICLO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFase())){ 
				 mensaje = Constantes.COD_FASE_INTFCAB_NULO+"/"+
				           Constantes.FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCod_doc())){ 
				 mensaje = Constantes.COD_COD_DOC_INTFCAB_NULO+"/"+
				           Constantes.COD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSerie_doc())){ 
				mensaje = Constantes.COD_SERIE_DOC_INTFCAB_NULO+"/"+
				          Constantes.SERIE_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getNum_doc())){ 
				mensaje = Constantes.COD_NUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.NUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FEC_DOC_INTFCAB_NULO+"/"+
						  Constantes.FEC_DOC_INTFCAB_NULO;	
		    }else if(!FechasUtil.isFechaValida(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FECDOC_INTFCAB_NO_VALIDO+"/"+
						  Constantes.FECDOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getEstado())){ 
		    	mensaje = Constantes.COD_ESTADO_INTFCAB_NULO+"/"+	
		    			  Constantes.ESTADO_INTFCAB_NULO;
		    }else if(!validarNulo(cabBean.getUe_envio())){ 
				mensaje = Constantes.COD_UE_ENVIO_INTFCAB_NULO+"/"+	
				          Constantes.UE_ENVIO_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getUe_estado())){ 
				mensaje = Constantes.COD_UE_ESTADO_INTFCAB_NULO+"/"+
				          Constantes.UE_ESTADO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_exp())){ 
				mensaje = Constantes.COD_INTF_EXP_INTFCAB_NULO+"/"+
				          Constantes.INTF_EXP_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_fase())){ 
				mensaje = Constantes.COD_INTF_FASE_INTFCAB_NULO+"/"+
				          Constantes.INTF_FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_sec())){ 
				mensaje = Constantes.COD_INTF_SEC_INTFCAB_NULO+"/"+
						  Constantes.INTF_SEC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_cor())){ 
				mensaje = Constantes.COD_INTF_COR_INTFCAB_NULO+"/"+
						  Constantes.INTF_COR_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getEstado_reg())){ 
				mensaje = Constantes.COD_ESTADO_REG_INTFCAB_NULO+"/"+
				          Constantes.ESTADO_REG_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDato_ori())){ 
				mensaje = Constantes.COD_DATO_ORI_INTFCAB_NULO+"/"+	
				          Constantes.DATO_ORI_INTFCAB_NULO;	
			}else if(!cabBean.getFase().equals(fase)){  
				mensaje = Constantes.COD_FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO+"/"+
				          Constantes.FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO;
			}else if(!cabBean.getCiclo().equals(ciclo)){  
				mensaje = Constantes.COD_CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO+"/"+
				          Constantes.CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO;
			}else{								
				i.setSecuencial(cabBean.getSecuencial());
				i.setAnoEje(cabBean.getAno_eje());
				i.setSecEjec(cabBean.getSec_ejec());
				i.setSecEjec2("");
				i.setMesEje("");
				i.setTipoOpe("");
				i.setModComp("");
				i.setSecArea("");
				i.setCiclo(cabBean.getCiclo());
				i.setFase(cabBean.getFase()); 
				i.setCodDoc(cabBean.getCod_doc());
				i.setSerieDoc(cabBean.getSerie_doc());
				i.setNumDoc(cabBean.getNum_doc());			
				//parseando la fechadoc			
				Date fechaDoc = FechasUtil.getFechaStringToDate(cabBean.getFec_doc());
				logger.info("Fecha de doc convertida a date ampliacion: "+fechaDoc);		
				i.setFecDoc(fechaDoc);		
			//	Date mfecha = FechasUtil.getFechaStringToDate(cabBean.getM_fecha());
				i.setmFecha(null); 
				i.setTipoId("");
				i.setRuc("");
				i.setOrigen("");
				i.setFteFin("");
				i.setTipoFin("");
				i.settPago(""); 
				i.settRecurs("");
				i.settCompro(""); 
				i.setMoneda("");
				i.settCambio(null); 
				i.setEstado(cabBean.getEstado()); 
				i.setUeEnvio(cabBean.getUe_envio());
				i.setUeEstado(cabBean.getUe_estado());
				i.setIntfExp(cabBean.getIntf_exp());
				i.setIntfFase(cabBean.getIntf_fase());
				i.setIntfSec(cabBean.getIntf_sec());
				i.setIntfCor(cabBean.getIntf_cor()); 
				i.setEstadoReg(cabBean.getEstado_reg()); 
				i.setDatoOri(cabBean.getDato_ori()); 
				valorCab = true;
			}				
			 /**GRABANDO EN INTF_DET09**/
			if(valorCab){
				listaIdClasif = new ArrayList<String>();
				listaDet09 = new ArrayList<IntfDet09>();
				for(IntfDet09IngresoBean d: detLista09){
					det = new IntfDet09();
					if(!validarNulo(d.getSecuencial())){ 
						mensaje = Constantes.COD_SECUENCIAL_INTF_DET09_NULO+"/"+
						          Constantes.SECUENCIAL_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getId_clasifi())){ 
						mensaje = Constantes.COD_ID_CLASIFI_INTF_DET09_NULO+"/"+
						          Constantes.ID_CLASIFI_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv1())){ 
						mensaje = Constantes.COD_CLASIFNIV1_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV1_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv2())){ 
						mensaje = Constantes.COD_CLASIFNIV2_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV2_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv3())){ 
						mensaje = Constantes.COD_CLASIFNIV3_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV3_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv4())){ 
						mensaje = Constantes.COD_CLASIFNIV4_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV4_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv5())){ 
						mensaje = Constantes.COD_CLASIFNIV5_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV5_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv6())){ 
						mensaje = Constantes.COD_CLASIFNIV6_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV6_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NO_VALIDO+"/"+
						          Constantes.MONTO_INTF_DET09_NO_VALIDO;
						break;
					}else if(validarNegativo(d.getMonto())){ 
					    mensaje = Constantes.COD_MONTO_INTF_DET09_NO_NEGATIVO+"/"+
					              Constantes.MONTO_INTF_DET09_NO_NEGATIVO;
					    break;
				    }else if(!validarNulo(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_MN_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_VALIDO+"/"+	
						          Constantes.MONTO_MN_INTF_DET09_NO_VALIDO;	
						break;
					}else if(validarNegativo(d.getMonto_mn())){ 
					    mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_NEGATIVO+"/"+
					              Constantes.MONTO_MN_INTF_DET09_NO_NEGATIVO;
					    break;
				    }else{					
						logger.info("Secuencial papappapa:  "+d.getSecuencial()); 
						det.setSecuencial(d.getSecuencial()); 
						det.setIdClasifi(d.getId_clasifi());
						det.setClasifniv1(d.getClasifniv1());
						det.setClasifniv2(d.getClasifniv2());
						det.setClasifniv3(d.getClasifniv3());
						det.setClasifniv4(d.getClasifniv4());
						det.setClasifniv5(d.getClasifniv5());
						det.setClasifniv6(d.getClasifniv6()); 
						det.setSecFunc(""); 
						det.setClasif2n1("");
						det.setClasif2n2(""); 
						det.setClasif2n3(""); 
						det.setClasif2n4(""); 
						det.setClasif2n5(""); 
						det.setClasif2n6(""); 
						det.setIdClasif2(""); 
						if(validarNulo(d.getMonto())){
							det.setMonto(Double.valueOf(d.getMonto())); 	
						}else{
							det.setMonto(null);	
						}
	                    if(validarNulo(d.getMonto_mn())){
	                    	det.setMontoMn(Double.valueOf(d.getMonto_mn()));  	
						}else{
							det.setMontoMn(null); 	
						}						
						det.setDatoOri(d.getDato_ori());
						valorDet = true;	
					}
					listaIdClasif.add(d.getId_clasifi());
					listaDet09.add(det);
				}//fin del for		
			}
			
			/**varificando idclasificar en el detalle**/			
			if(valorDet && listaDet09.size()>1){
				logger.info("Ingresando a verificar idClasificador: "); 
				Collections.sort(listaIdClasif);
				String idClasif = "";
				for(int j=0;j<listaIdClasif.size();j++){
					logger.info("verificar idClasificador: "+listaIdClasif.get(j)); 
					if(idClasif.equals(listaIdClasif.get(j))){ 
						valorDet = false;	
						mensaje = Constantes.COD_ID_CLASIFICADOR_DET09_REPETIDO+"/"+
						          Constantes.ID_CLASIFICADOR_DET09_REPETIDO; 
						break;
					}else{
						idClasif = listaIdClasif.get(j);						
					}					
				}
			}
			
			if(valorCab && valorDet){
				Map<String, Object> paramts = new HashMap<String, Object>();				
				paramts.put("intfCab", i);
				paramts.put("listaDet", listaDet09);			
				//validando campos de las interfases
				String mensajeID = validacionIngresoService.validarIngresosDAmpl(paramts);
				String[] msnId = mensajeID.split("/");
				if(CODIGO_VERIFICACION_OK.equals(msnId[0])) {					
				    ingresoDao.insertarIngresosDeterminado(paramts);											
				}else{
					mensaje = mensajeID;
				}		 				
			}			
		} catch (Exception e) {		
			logger.info("Error al grabar datos de los ingresos Determinado Ampliacion: "+e);		
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}finally{
			if(i!=null){
				i =null;			
			}
			if(listaDet09!=null){				
				listaDet09 = null;				
			}
			if(n!=null){			
				n= null;
			}
			if(det!=null){			
				det= null;
			}
			if(listaIdClasif!=null){			
				listaIdClasif= null;
			}
		}
		return mensaje;
	}	
	
	private String  insertDatosIngresosDRebaja(String ciclo,String fase,Map<String, Object> params) throws Exception {
		logger.info("Ingresando a grabar datos de ingresos Determinado-Rebaja"); 
		String mensaje = CODIGO_VERIFICACION_OK+"/"+"";
		boolean valorCab = false;
		boolean valorDet =false;		
		IntfCab i = new IntfCab();
		List<IntfDet09> listaDet09 =null;
		List<String> listaIdClasif=null;
		IntfDet09 det = null;
		IntfNot n = null;
		double sumaMonto = 0.0;
		double sumaMontoMn = 0.0;
		try {
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");   
			@SuppressWarnings("unchecked")
			List<IntfDet09IngresoBean> detLista09 = (List<IntfDet09IngresoBean>) params.get("det");		
		   /**GRABANDO EN INTF_CAB**/	
			if(!validarNulo(cabBean.getSecuencial())){ 
				mensaje = Constantes.COD_SECUENCIAL_INTFCAB_NULO+"/"+
			    		   Constantes.SECUENCIAL_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getAno_eje())){ 
				mensaje = Constantes.COD_ANIO_EJE_INTFCAB_NULO+"/"+
			               Constantes.ANIO_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_ejec())){ 
				 mensaje = Constantes.COD_SEC_EJEC_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getCiclo())){ 
				 mensaje = Constantes.COD_CICLO_INTFCAB_NULO+"/"+
				           Constantes.CICLO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFase())){ 
				 mensaje = Constantes.COD_FASE_INTFCAB_NULO+"/"+
				           Constantes.FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCod_doc())){ 
				 mensaje = Constantes.COD_COD_DOC_INTFCAB_NULO+"/"+
				           Constantes.COD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSerie_doc())){ 
				mensaje = Constantes.COD_SERIE_DOC_INTFCAB_NULO+"/"+
				          Constantes.SERIE_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getNum_doc())){ 
				mensaje = Constantes.COD_NUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.NUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FEC_DOC_INTFCAB_NULO+"/"+
						  Constantes.FEC_DOC_INTFCAB_NULO;	
		    }else if(!FechasUtil.isFechaValida(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FECDOC_INTFCAB_NO_VALIDO+"/"+
						  Constantes.FECDOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getEstado())){ 
		    	mensaje = Constantes.COD_ESTADO_INTFCAB_NULO+"/"+	
		    			  Constantes.ESTADO_INTFCAB_NULO;
		    }else if(!validarNulo(cabBean.getUe_envio())){ 
				mensaje = Constantes.COD_UE_ENVIO_INTFCAB_NULO+"/"+	
				          Constantes.UE_ENVIO_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getUe_estado())){ 
				mensaje = Constantes.COD_UE_ESTADO_INTFCAB_NULO+"/"+
				          Constantes.UE_ESTADO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_exp())){ 
				mensaje = Constantes.COD_INTF_EXP_INTFCAB_NULO+"/"+
				          Constantes.INTF_EXP_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_fase())){ 
				mensaje = Constantes.COD_INTF_FASE_INTFCAB_NULO+"/"+
				          Constantes.INTF_FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_sec())){ 
				mensaje = Constantes.COD_INTF_SEC_INTFCAB_NULO+"/"+
						  Constantes.INTF_SEC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_cor())){ 
				mensaje = Constantes.COD_INTF_COR_INTFCAB_NULO+"/"+
						  Constantes.INTF_COR_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getEstado_reg())){ 
				mensaje = Constantes.COD_ESTADO_REG_INTFCAB_NULO+"/"+
				          Constantes.ESTADO_REG_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDato_ori())){ 
				mensaje = Constantes.COD_DATO_ORI_INTFCAB_NULO+"/"+	
				          Constantes.DATO_ORI_INTFCAB_NULO;	
			}else if(!cabBean.getFase().equals(fase)){  
				mensaje = Constantes.COD_FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO+"/"+
				          Constantes.FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO;
			}else if(!cabBean.getCiclo().equals(ciclo)){  
				mensaje = Constantes.COD_CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO+"/"+
				          Constantes.CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO;
			}else{						
				i.setSecuencial(cabBean.getSecuencial());
				i.setAnoEje(cabBean.getAno_eje());
				i.setSecEjec(cabBean.getSec_ejec());
				i.setSecEjec2("");
				i.setMesEje("");
				i.setTipoOpe("");
				i.setModComp("");
				i.setSecArea("");
				i.setCiclo(cabBean.getCiclo());
				i.setFase(cabBean.getFase()); 
				i.setCodDoc(cabBean.getCod_doc());
				i.setSerieDoc(cabBean.getSerie_doc());
				i.setNumDoc(cabBean.getNum_doc());			
				//parseando la fechadoc			
				Date fechaDoc = FechasUtil.getFechaStringToDate(cabBean.getFec_doc());
				logger.info("Fecha de doc convertida a date: "+fechaDoc);		
				i.setFecDoc(fechaDoc);		
			//	Date mfecha = FechasUtil.getFechaStringToDate(cabBean.getM_fecha());
				i.setmFecha(null); 
				i.setTipoId("");
				i.setRuc("");
				i.setOrigen("");
				i.setFteFin("");
				i.setTipoFin("");
				i.settPago(""); 
				i.settRecurs("");
				i.settCompro(""); 
				i.setMoneda("");
				i.settCambio(null); 
				i.setEstado(cabBean.getEstado()); 
				i.setUeEnvio(cabBean.getUe_envio());
				i.setUeEstado(cabBean.getUe_estado());
				i.setIntfExp(cabBean.getIntf_exp());
				i.setIntfFase(cabBean.getIntf_fase());
				i.setIntfSec(cabBean.getIntf_sec());
				i.setIntfCor(cabBean.getIntf_cor()); 
				i.setEstadoReg(cabBean.getEstado_reg()); 
				i.setDatoOri(cabBean.getDato_ori());
				valorCab = true;	
			}				
			 /**GRABANDO EN INTF_DET09**/
			if(valorCab){
				listaIdClasif = new ArrayList<String>();
				listaDet09 = new ArrayList<IntfDet09>();
				for(IntfDet09IngresoBean d: detLista09){
					det = new IntfDet09();
					if(!validarNulo(d.getSecuencial())){ 
						mensaje = Constantes.COD_SECUENCIAL_INTF_DET09_NULO+"/"+
						          Constantes.SECUENCIAL_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getId_clasifi())){ 
						mensaje = Constantes.COD_ID_CLASIFI_INTF_DET09_NULO+"/"+
						          Constantes.ID_CLASIFI_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv1())){ 
						mensaje = Constantes.COD_CLASIFNIV1_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV1_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv2())){ 
						mensaje = Constantes.COD_CLASIFNIV2_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV2_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv3())){ 
						mensaje = Constantes.COD_CLASIFNIV3_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV3_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv4())){ 
						mensaje = Constantes.COD_CLASIFNIV4_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV4_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv5())){ 
						mensaje = Constantes.COD_CLASIFNIV5_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV5_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv6())){ 
						mensaje = Constantes.COD_CLASIFNIV6_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV6_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NO_VALIDO+"/"+
						          Constantes.MONTO_INTF_DET09_NO_VALIDO;
						break;
					}else if(!validarNegativo(d.getMonto())){ 
					    mensaje = Constantes.COD_MONTO_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_INTF_DET09_NO_POSITIVO;
					    break;
				    }else if(!validarNulo(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_MN_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_VALIDO+"/"+	
						          Constantes.MONTO_MN_INTF_DET09_NO_VALIDO;	
						break;
					}else if(!validarNegativo(d.getMonto_mn())){ 
					    mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_MN_INTF_DET09_NO_POSITIVO;
					    break;
				    }else{								
						det.setSecuencial(d.getSecuencial()); 
						det.setIdClasifi(d.getId_clasifi());
						det.setClasifniv1(d.getClasifniv1());
						det.setClasifniv2(d.getClasifniv2());
						det.setClasifniv3(d.getClasifniv3());
						det.setClasifniv4(d.getClasifniv4());
						det.setClasifniv5(d.getClasifniv5());
						det.setClasifniv6(d.getClasifniv6()); 
						det.setSecFunc(""); 
						det.setClasif2n1("");
						det.setClasif2n2(""); 
						det.setClasif2n3(""); 
						det.setClasif2n4(""); 
						det.setClasif2n5(""); 
						det.setClasif2n6(""); 
						det.setIdClasif2(""); 
						if(validarNulo(d.getMonto())){						
							det.setMonto(Double.valueOf(d.getMonto())); 	
						}else{
							det.setMonto(null);	 
						}
	                    if(validarNulo(d.getMonto_mn())){
	                    	det.setMontoMn(Double.valueOf(d.getMonto_mn()));  	
						}else{
							det.setMontoMn(null); 	
						}
	                    sumaMonto = sumaMonto +det.getMonto();
	                    sumaMontoMn = sumaMontoMn +det.getMontoMn();
						det.setDatoOri(d.getDato_ori()); 
						valorDet = true;		
					}
					listaIdClasif.add(d.getId_clasifi());
					listaDet09.add(det);
				}//fin del for	
			}
			/**varificando idclasificar en el detalle**/			
			if(valorDet && listaDet09.size()>1){
				logger.info("Ingresando a verificar idClasificador: "); 
				Collections.sort(listaIdClasif);
				String idClasif = "";
				for(int j=0;j<listaIdClasif.size();j++){
					logger.info("verificar idClasificador: "+listaIdClasif.get(j)); 
					if(idClasif.equals(listaIdClasif.get(j))){ 
						valorDet = false;	
						mensaje = Constantes.COD_ID_CLASIFICADOR_DET09_REPETIDO+"/"+
						          Constantes.ID_CLASIFICADOR_DET09_REPETIDO; 
						break;
					}else{
						idClasif = listaIdClasif.get(j);						
					}					
				}
			}	
			
			if(valorCab && valorDet){
				Map<String, Object> paramts = new HashMap<String, Object>();				
				paramts.put("intfCab", i);
				paramts.put("listaDet", listaDet09);
				paramts.put("montoTotal", sumaMonto);
				paramts.put("montoMnTotal", sumaMontoMn);
				//validando campos de las interfases
				String mensajeID = validacionIngresoService.validarIngresosDRebaja(paramts);
				String[] msnId = mensajeID.split("/");
				if(CODIGO_VERIFICACION_OK.equals(msnId[0])) {					
				    ingresoDao.insertarIngresosDeterminado(paramts);											
				}else{
					mensaje = mensajeID;
				}		 				
			}			
		} catch (Exception e) {
			logger.info("Error al grabar datos de los ingresos Determinado Rebaja: "+e);		
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}finally{
			if(i!=null){
				i =null;			
			}
			if(listaDet09!=null){				
				listaDet09 = null;				
			}
			if(n!=null){			
				n= null;
			}
			if(det!=null){			
				det= null;
			}
			if(listaIdClasif!=null){			
				listaIdClasif= null;
			}
		}
		return mensaje;
	}
	
	private String  insertDatosIngresosDAnuXError(String ciclo,String fase,Map<String, Object> params) throws Exception {
		logger.info("Ingresando a grabar datos de ingresos Determinado-Anulacion y Anulacion por error"); 
		String mensaje = CODIGO_VERIFICACION_OK+"/"+"";
		boolean valorCab = false;
		boolean valorDet =false;		
		IntfCab i = new IntfCab();
		List<IntfDet09> listaDet09 = null;
		List<String> listaIdClasif=null;
		IntfDet09 det = null;
		IntfNot n = null;
		double sumaMonto = 0.0;
		double sumaMontoMn = 0.0;
		try {	
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");   
			@SuppressWarnings("unchecked")
			List<IntfDet09IngresoBean> detLista09 = (List<IntfDet09IngresoBean>) params.get("det");			
		   /**GRABANDO EN INTF_CAB**/		
			if(!validarNulo(cabBean.getSecuencial())){ 
				mensaje = Constantes.COD_SECUENCIAL_INTFCAB_NULO+"/"+
			    		   Constantes.SECUENCIAL_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getAno_eje())){ 
				mensaje = Constantes.COD_ANIO_EJE_INTFCAB_NULO+"/"+
			               Constantes.ANIO_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_ejec())){ 
				 mensaje = Constantes.COD_SEC_EJEC_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getCiclo())){ 
				 mensaje = Constantes.COD_CICLO_INTFCAB_NULO+"/"+
				           Constantes.CICLO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFase())){ 
				 mensaje = Constantes.COD_FASE_INTFCAB_NULO+"/"+
				           Constantes.FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCod_doc())){ 
				 mensaje = Constantes.COD_COD_DOC_INTFCAB_NULO+"/"+
				           Constantes.COD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSerie_doc())){ 
				mensaje = Constantes.COD_SERIE_DOC_INTFCAB_NULO+"/"+
				          Constantes.SERIE_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getNum_doc())){ 
				mensaje = Constantes.COD_NUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.NUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FEC_DOC_INTFCAB_NULO+"/"+
						  Constantes.FEC_DOC_INTFCAB_NULO;	
		    }else if(!FechasUtil.isFechaValida(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FECDOC_INTFCAB_NO_VALIDO+"/"+
						  Constantes.FECDOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getEstado())){ 
		    	mensaje = Constantes.COD_ESTADO_INTFCAB_NULO+"/"+	
		    			  Constantes.ESTADO_INTFCAB_NULO;
		    }else if(!validarNulo(cabBean.getUe_envio())){ 
				mensaje = Constantes.COD_UE_ENVIO_INTFCAB_NULO+"/"+	
				          Constantes.UE_ENVIO_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getUe_estado())){ 
				mensaje = Constantes.COD_UE_ESTADO_INTFCAB_NULO+"/"+
				          Constantes.UE_ESTADO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_exp())){ 
				mensaje = Constantes.COD_INTF_EXP_INTFCAB_NULO+"/"+
				          Constantes.INTF_EXP_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_fase())){ 
				mensaje = Constantes.COD_INTF_FASE_INTFCAB_NULO+"/"+
				          Constantes.INTF_FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_sec())){ 
				mensaje = Constantes.COD_INTF_SEC_INTFCAB_NULO+"/"+
						  Constantes.INTF_SEC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_cor())){ 
				mensaje = Constantes.COD_INTF_COR_INTFCAB_NULO+"/"+
						  Constantes.INTF_COR_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getEstado_reg())){ 
				mensaje = Constantes.COD_ESTADO_REG_INTFCAB_NULO+"/"+
				          Constantes.ESTADO_REG_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDato_ori())){ 
				mensaje = Constantes.COD_DATO_ORI_INTFCAB_NULO+"/"+	
				          Constantes.DATO_ORI_INTFCAB_NULO;	
			}else if(!cabBean.getFase().equals(fase)){  
				mensaje = Constantes.COD_FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO+"/"+
				          Constantes.FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO;
			}else if(!cabBean.getCiclo().equals(ciclo)){  
				mensaje = Constantes.COD_CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO+"/"+
				          Constantes.CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO;
			}else{						
				i.setSecuencial(cabBean.getSecuencial());
				i.setAnoEje(cabBean.getAno_eje());
				i.setSecEjec(cabBean.getSec_ejec());
				i.setSecEjec2("");
				i.setMesEje("");
				i.setTipoOpe("");
				i.setModComp("");
				i.setSecArea("");
				i.setCiclo(cabBean.getCiclo());
				i.setFase(cabBean.getFase()); 
				i.setCodDoc(cabBean.getCod_doc());
				i.setSerieDoc(cabBean.getSerie_doc());
				i.setNumDoc(cabBean.getNum_doc());			
				//parseando la fechadoc			
				Date fechaDoc = FechasUtil.getFechaStringToDate(cabBean.getFec_doc());
				logger.info("Fecha de doc convertida a date: "+fechaDoc);		
				i.setFecDoc(fechaDoc);		
			//	Date mfecha = FechasUtil.getFechaStringToDate(cabBean.getM_fecha());
				i.setmFecha(null); 
				i.setTipoId("");
				i.setRuc("");
				i.setOrigen("");
				i.setFteFin("");
				i.setTipoFin("");
				i.settPago(""); 
				i.settRecurs("");
				i.settCompro(""); 
				i.setMoneda("");
				i.settCambio(null); 
				i.setEstado(cabBean.getEstado()); 
				i.setUeEnvio(cabBean.getUe_envio());
				i.setUeEstado(cabBean.getUe_estado());
				i.setIntfExp(cabBean.getIntf_exp());
				i.setIntfFase(cabBean.getIntf_fase());
				i.setIntfSec(cabBean.getIntf_sec());
				i.setIntfCor(cabBean.getIntf_cor()); 
				i.setEstadoReg(cabBean.getEstado_reg()); 
				i.setDatoOri(cabBean.getDato_ori());
				valorCab = true;	
			}				
			 /**GRABANDO EN INTF_DET09**/
			if(valorCab){
				listaIdClasif = new ArrayList<String>();
				listaDet09 = new ArrayList<IntfDet09>();
				for(IntfDet09IngresoBean d: detLista09){
				   det = new IntfDet09();
				   if(!validarNulo(d.getSecuencial())){ 
						mensaje = Constantes.COD_SECUENCIAL_INTF_DET09_NULO+"/"+
						          Constantes.SECUENCIAL_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getId_clasifi())){ 
						mensaje = Constantes.COD_ID_CLASIFI_INTF_DET09_NULO+"/"+
						          Constantes.ID_CLASIFI_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv1())){ 
						mensaje = Constantes.COD_CLASIFNIV1_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV1_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv2())){ 
						mensaje = Constantes.COD_CLASIFNIV2_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV2_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv3())){ 
						mensaje = Constantes.COD_CLASIFNIV3_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV3_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv4())){ 
						mensaje = Constantes.COD_CLASIFNIV4_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV4_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv5())){ 
						mensaje = Constantes.COD_CLASIFNIV5_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV5_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv6())){ 
						mensaje = Constantes.COD_CLASIFNIV6_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV6_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NO_VALIDO+"/"+
						          Constantes.MONTO_INTF_DET09_NO_VALIDO;
						break;
					}else if(!validarNegativo(d.getMonto())){ 
					    mensaje = Constantes.COD_MONTO_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_INTF_DET09_NO_POSITIVO;
					    break;
				    }else if(!validarNulo(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_MN_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_VALIDO+"/"+	
						          Constantes.MONTO_MN_INTF_DET09_NO_VALIDO;	
						break;
					}else if(!validarNegativo(d.getMonto_mn())){ 
					    mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_MN_INTF_DET09_NO_POSITIVO;
					    break;
				    }else{								
						det.setSecuencial(d.getSecuencial()); 
						det.setIdClasifi(d.getId_clasifi());
						det.setClasifniv1(d.getClasifniv1());
						det.setClasifniv2(d.getClasifniv2());
						det.setClasifniv3(d.getClasifniv3());
						det.setClasifniv4(d.getClasifniv4());
						det.setClasifniv5(d.getClasifniv5());
						det.setClasifniv6(d.getClasifniv6()); 
						det.setSecFunc(""); 
						det.setClasif2n1("");
						det.setClasif2n2(""); 
						det.setClasif2n3(""); 
						det.setClasif2n4(""); 
						det.setClasif2n5(""); 
						det.setClasif2n6(""); 
						det.setIdClasif2(""); 
						if(validarNulo(d.getMonto())){						
							det.setMonto(Double.valueOf(d.getMonto())); 	
						}else{
							det.setMonto(null);	 
						}
	                    if(validarNulo(d.getMonto_mn())){
	                    	det.setMontoMn(Double.valueOf(d.getMonto_mn()));  	
						}else{
							det.setMontoMn(null); 	
						}
	                    sumaMonto = sumaMonto +det.getMonto();
	                    sumaMontoMn = sumaMontoMn +det.getMontoMn();
						det.setDatoOri(d.getDato_ori()); 
						valorDet = true;		
					}
				   listaIdClasif.add(d.getId_clasifi());
				   listaDet09.add(det);	
				}//fin del for				
			}
			/**varificando idclasificar en el detalle**/			
			if(valorDet && listaDet09.size()>1){
				logger.info("Ingresando a verificar idClasificador: "); 
				Collections.sort(listaIdClasif);
				String idClasif = "";
				for(int j=0;j<listaIdClasif.size();j++){
					logger.info("verificar idClasificador: "+listaIdClasif.get(j)); 
					if(idClasif.equals(listaIdClasif.get(j))){ 
						valorDet = false;	
						mensaje = Constantes.COD_ID_CLASIFICADOR_DET09_REPETIDO+"/"+
						          Constantes.ID_CLASIFICADOR_DET09_REPETIDO;
						break;
					}else{
						idClasif = listaIdClasif.get(j);						
					}					
				}
			}		
			if(valorCab && valorDet){
				Map<String, Object> paramts = new HashMap<String, Object>();				
				paramts.put("intfCab", i);
				paramts.put("listaDet", listaDet09);
				paramts.put("montoTotal", sumaMonto);
				paramts.put("montoMnTotal", sumaMontoMn);
				//validando campos de las interfases
				String mensajeID = validacionIngresoService.validarIngresosDAnulXError(paramts);
				String[] msnId = mensajeID.split("/");
				if(CODIGO_VERIFICACION_OK.equals(msnId[0])) {					
				    ingresoDao.insertarIngresosDeterminado(paramts);											
				}else{
					mensaje = mensajeID;
				}		 				
			}			
		} catch (Exception e) {		
			logger.info("Error al grabar datos de los ingresos Determinado anulacion y anulacion x error: "+e);		
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}finally{
			if(i!=null){
				i =null;			
			}
			if(listaDet09!=null){				
				listaDet09 = null;				
			}
			if(n!=null){			
				n= null;
			}
			if(det!=null){			
				det= null;
			}
			if(listaIdClasif!=null){			
				listaIdClasif= null;
			}
		}
		return mensaje;
	}
	
	
	/*****INGRESOS DE DATOS RECAUDADO (I-R)*********************/	
	
	private  String  insertDatosIngresosR(String ciclo,String fase,Map<String, Object> params) throws Exception {
		logger.info("Ingresando a grabar datos de ingresos Recaudado"); 
		String mensaje = CODIGO_VERIFICACION_OK+"/"+"";
		boolean valorCab = false;
		boolean valorDet =false;
		boolean valorNot =false;
		IntfCab i = new IntfCab();
		List<IntfDet09> listaDet09 =null;
		List<String> listaIdClasif=null;
		IntfDet09 det = null;
		IntfNot n = new IntfNot();
		double sumaMonto = 0;
		double sumaMontoMn = 0;
		try {	
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");   
			@SuppressWarnings("unchecked")
			List<IntfDet09IngresoBean> detLista09 = (List<IntfDet09IngresoBean>) params.get("det");			 
			IntfNotBean notBean = (IntfNotBean) params.get("not"); 
			
		   /**GRABANDO EN INTF_CAB**/
			if(!validarNulo(cabBean.getSecuencial())){ 
				mensaje = Constantes.COD_SECUENCIAL_INTFCAB_NULO+"/"+
			    		   Constantes.SECUENCIAL_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getAno_eje())){ 
				mensaje = Constantes.COD_ANIO_EJE_INTFCAB_NULO+"/"+
			               Constantes.ANIO_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_ejec())){ 
				 mensaje = Constantes.COD_SEC_EJEC_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getCiclo())){ 
				 mensaje = Constantes.COD_CICLO_INTFCAB_NULO+"/"+
				           Constantes.CICLO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFase())){ 
				 mensaje = Constantes.COD_FASE_INTFCAB_NULO+"/"+
				           Constantes.FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCod_doc())){ 
				 mensaje = Constantes.COD_COD_DOC_INTFCAB_NULO+"/"+
				           Constantes.COD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSerie_doc())){ 
				mensaje = Constantes.COD_SERIE_DOC_INTFCAB_NULO+"/"+
				          Constantes.SERIE_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getNum_doc())){ 
				mensaje = Constantes.COD_NUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.NUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FEC_DOC_INTFCAB_NULO+"/"+
						  Constantes.FEC_DOC_INTFCAB_NULO;	
		    }else if(!FechasUtil.isFechaValida(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FECDOC_INTFCAB_NO_VALIDO+"/"+
						  Constantes.FECDOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getM_fecha())){ 
				mensaje = Constantes.COD_M_FECHA_INTFCAB_NULO+"/"+	
				          Constantes.M_FECHA_INTFCAB_NULO;
		    }else if(!FechasUtil.isFechaValida(cabBean.getM_fecha())){ 
				mensaje = Constantes.COD_M_FECHA_INTFCAB_NO_VALIDO+"/"+
				          Constantes.M_FECHA_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getOrigen())){ 
				mensaje = Constantes.COD_ORIGEN_INTFCAB_NULO+"/"+
				          Constantes.ORIGEN_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFte_fin())){ 
				mensaje = Constantes.COD_FTE_FIN_INTFCAB_NULO+"/"+	
				          Constantes.FTE_FIN_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getT_pago())){ 
				mensaje = Constantes.COD_T_PAGO_INTFCAB_NULO+"/"+
				          Constantes.T_PAGO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getT_recurs())){ 
				mensaje = Constantes.COD_T_RECURS_INTFCAB_NULO+"/"+	
				          Constantes.T_RECURS_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getT_compro())){ 
				mensaje = Constantes.COD_T_COMPRO_INTFCAB_NULO+"/"+
				          Constantes.T_COMPRO_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getAno_cta())){ 
				mensaje = Constantes.COD_ANO_CTA_INTFCAB_NULO+"/"+	
				          Constantes.ANO_CTA_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getBanco())){ 
				mensaje = Constantes.COD_BANCO_INTFCAB_NULO+"/"+	
				          Constantes.BANCO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCta_cte())){ 
				mensaje = Constantes.COD_CTA_CTE_INTFCAB_NULO+"/"+	
				          Constantes.CTA_CTE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getAno_cta2())){ 
				mensaje = Constantes.COD_ANO_CTA2_INTFCAB_NULO+"/"+
				          Constantes.ANO_CTA2_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getBanco2())){ 
				mensaje = Constantes.COD_BANCO2_INTFCAB_NULO+"/"+	
				          Constantes.BANCO2_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCta_cte2())){ 
				mensaje = Constantes.CTA_CTE2_INTFCAB_NULO+"/"+
				          Constantes.CTA_CTE2_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getMoneda())){ 
				mensaje = Constantes.COD_MONEDA_INTFCAB_NULO+"/"+	
				          Constantes.MONEDA_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getT_cambio())){ 
				mensaje = Constantes.COD_T_CAMBIO_INTFCAB_NULO+"/"+	
				          Constantes.T_CAMBIO_INTFCAB_NULO;	
			}else if(!esDecimal(cabBean.getT_cambio())){ 
				mensaje = Constantes.COD_T_CAMBIO_INTFCAB_NO_VALIDO+"/"+
				          Constantes.T_CAMBIO_INTFCAB_NO_VALIDO;
			}else if(validarNegativo(cabBean.getT_cambio())){ 
				mensaje = Constantes.COD_T_CAMBIO_INTFCAB_NO_NEGATIVO+"/"+
				          Constantes.T_CAMBIO_INTFCAB_NO_NEGATIVO;
			}else if(!validarNulo(cabBean.getDcod_doc())){ 
				mensaje = Constantes.COD_DCOD_DOC_INTFCAB_NULO+"/"+
				          Constantes.DCOD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDnum_doc())){ 
				mensaje = Constantes.COD_DNUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.DNUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getDfec_doc())){ 
				mensaje = Constantes.COD_DFEC_DOC_INTFCAB_NULO+"/"+	
				          Constantes.DFEC_DOC_INTFCAB_NULO;
			}else if(!FechasUtil.isFechaValida(cabBean.getDfec_doc())){ 
				mensaje = Constantes.COD_DFEC_DOC_INTFCAB_NO_VALIDO+"/"+
				          Constantes.DFEC_DOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getDnombre())){ 
		    	mensaje = Constantes.COD_DNOMBRE_INTFCAB_NULO+"/"+
		    	          Constantes.DNOMBRE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDmonto())){ 
				mensaje = Constantes.COD_DMONTO_INTFCAB_NULO+"/"+
				          Constantes.DMONTO_INTFCAB_NULO;
			}else if(!esDecimal(cabBean.getDmonto())){ 
				mensaje = Constantes.COD_DMONTO_INTFCAB_NO_VALIDO+"/"+
				          Constantes.DMONTO_INTFCAB_NO_VALIDO;
			}else if(validarNegativo(cabBean.getDmonto())){ 
				mensaje = Constantes.COD_DMONTO_INTFCAB_NO_NEGATIVO+"/"+
				          Constantes.DMONTO_INTFCAB_NO_NEGATIVO;
		    }else if(!validarNulo(cabBean.getDmonto_mn())){ 
		    	mensaje = Constantes.COD_DMONTO_MN_INTFCAB_NULO+"/"+
		    	          Constantes.DMONTO_MN_INTFCAB_NULO;
			}else if(!esDecimal(cabBean.getDmonto_mn())){ 
				mensaje = Constantes.COD_DMONTO_MN_INTFCAB_NO_VALIDO+"/"+
				          Constantes.DMONTO_MN_INTFCAB_NO_VALIDO;
			}else if(validarNegativo(cabBean.getDmonto_mn())){ 
				mensaje = Constantes.COD_DMONTO_MN_INTFCAB_NO_NEGATIVO+"/"+
				          Constantes.DMONTO_MN_INTFCAB_NO_NEGATIVO;
		    }else if(!validarNulo(cabBean.getUe_envio())){ 
				mensaje = Constantes.COD_UE_ENVIO_INTFCAB_NULO+"/"+	
				          Constantes.UE_ENVIO_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getUe_estado())){ 
				mensaje = Constantes.COD_UE_ESTADO_INTFCAB_NULO+"/"+
				          Constantes.UE_ESTADO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_exp())){ 
				mensaje = Constantes.COD_INTF_EXP_INTFCAB_NULO+"/"+
				          Constantes.INTF_EXP_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_fase())){ 
				mensaje = Constantes.COD_INTF_FASE_INTFCAB_NULO+"/"+
				          Constantes.INTF_FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_sec())){ 
				mensaje = Constantes.COD_INTF_SEC_INTFCAB_NULO+"/"+
						  Constantes.INTF_SEC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_cor())){ 
				mensaje = Constantes.COD_INTF_COR_INTFCAB_NULO+"/"+
						  Constantes.INTF_COR_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getEstado_reg())){ 
				mensaje = Constantes.COD_ESTADO_REG_INTFCAB_NULO+"/"+
				          Constantes.ESTADO_REG_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDato_ori())){ 
				mensaje = Constantes.COD_DATO_ORI_INTFCAB_NULO+"/"+	
				          Constantes.DATO_ORI_INTFCAB_NULO;	
			}else if(!cabBean.getFase().equals(fase)){  
				mensaje = Constantes.COD_FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO+"/"+
				          Constantes.FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO;
			}else if(!cabBean.getCiclo().equals(ciclo)){  
				mensaje = Constantes.COD_CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO+"/"+
				          Constantes.CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO;
			}else{								
				i.setSecuencial(cabBean.getSecuencial());
				i.setAnoEje(cabBean.getAno_eje());
				i.setSecEjec(cabBean.getSec_ejec());				
				i.setCiclo(cabBean.getCiclo());
				i.setFase(cabBean.getFase()); 
				i.setCodDoc(cabBean.getCod_doc());
				i.setSerieDoc(cabBean.getSerie_doc());
				i.setNumDoc(cabBean.getNum_doc());			
				//parseando la fechadoc
				logger.info("fecha de doc ingresaod:" +cabBean.getFec_doc()); 
				Date fechaDoc = FechasUtil.getFechaStringToDate(cabBean.getFec_doc());
				logger.info("Fecha de doc convertida a date recaudado: "+fechaDoc);		
				i.setFecDoc(fechaDoc);		
				Date mfecha = FechasUtil.getFechaStringToDate(cabBean.getM_fecha());
				i.setmFecha(mfecha); 
				//fin de parsenado fechas
				i.setOrigen(cabBean.getOrigen());
				i.setFteFin(cabBean.getFte_fin());				
				i.settPago(cabBean.getT_pago()); 
				i.settRecurs(cabBean.getT_recurs());
				i.settCompro(cabBean.getT_compro());				
				i.setAnoCta(cabBean.getAno_cta());
				i.setBanco(cabBean.getBanco());
				i.setCtaCte(cabBean.getCta_cte());				
				i.setAnoCta2(cabBean.getAno_cta2());
				i.setBanco2(cabBean.getBanco2());
				i.setCtaCte2(cabBean.getCta_cte2());				
				i.setMoneda(cabBean.getMoneda());
				if(validarNulo(cabBean.getT_cambio())){ 
					i.settCambio(Double.valueOf(cabBean.getT_cambio())); 	
				}else{
					i.settCambio(null); 		
				}					
				i.setDcodDoc(cabBean.getDcod_doc());
				i.setDnumDoc(cabBean.getDnum_doc());
				//parseando fechas
				Date dFechaDoc = FechasUtil.getFechaStringToDate(cabBean.getDfec_doc());
				logger.info("Dfecha de documento B :"+dFechaDoc);
				i.setDfecDoc(dFechaDoc);				
				i.setDnombre(cabBean.getDnombre());
				
				if(validarNulo(cabBean.getDmonto())){ 
					i.setDmonto(Double.valueOf(cabBean.getDmonto())); 	
				}else{
					i.setDmonto(null); 		
				}
				if(validarNulo(cabBean.getDmonto_mn())){ 
					i.setDmontoMn(Double.valueOf(cabBean.getDmonto_mn())); 	
				}else{
					i.setDmontoMn(null); 		
				}								
				i.setUeEnvio(cabBean.getUe_envio());
				i.setUeEstado(cabBean.getUe_estado());
				i.setIntfExp(cabBean.getIntf_exp());				
				i.setIntfFase(cabBean.getIntf_fase());
				i.setIntfSec(cabBean.getIntf_sec());
				i.setIntfCor(cabBean.getIntf_cor());					
				i.setEstadoReg(cabBean.getEstado_reg()); 
				i.setDatoOri(cabBean.getDato_ori()); 
				//datos adicionales para recaudado anulado,etc
				i.setEstado("");
				i.setMesEje(""); //validar
				valorCab = true;
			}				
			 /**GRABANDO EN INTF_DET09**/
			if(valorCab){
				listaIdClasif = new ArrayList<String>();
				listaDet09 = new ArrayList<IntfDet09>();				
				for(IntfDet09IngresoBean d: detLista09){
					det = new IntfDet09();
					if(!validarNulo(d.getSecuencial())){ 
						mensaje = Constantes.COD_SECUENCIAL_INTF_DET09_NULO+"/"+
						          Constantes.SECUENCIAL_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getId_clasifi())){ 
						mensaje = Constantes.COD_ID_CLASIFI_INTF_DET09_NULO+"/"+
						          Constantes.ID_CLASIFI_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv1())){ 
						mensaje = Constantes.COD_CLASIFNIV1_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV1_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv2())){ 
						mensaje = Constantes.COD_CLASIFNIV2_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV2_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv3())){ 
						mensaje = Constantes.COD_CLASIFNIV3_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV3_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv4())){ 
						mensaje = Constantes.COD_CLASIFNIV4_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV4_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv5())){ 
						mensaje = Constantes.COD_CLASIFNIV5_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV5_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv6())){ 
						mensaje = Constantes.COD_CLASIFNIV6_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV6_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NO_VALIDO+"/"+
						          Constantes.MONTO_INTF_DET09_NO_VALIDO;
						break;
					}else if(validarNegativo(d.getMonto())){ 
					    mensaje = Constantes.COD_MONTO_INTF_DET09_NO_NEGATIVO+"/"+
					              Constantes.MONTO_INTF_DET09_NO_NEGATIVO;
					    break;
				    }else if(!validarNulo(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_MN_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_VALIDO+"/"+	
						          Constantes.MONTO_MN_INTF_DET09_NO_VALIDO;	
						break;
					}else if(validarNegativo(d.getMonto_mn())){ 
					    mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_NEGATIVO+"/"+
					              Constantes.MONTO_MN_INTF_DET09_NO_NEGATIVO;
					    break;
				    }else{								
						det.setSecuencial(d.getSecuencial()); 
						det.setIdClasifi(d.getId_clasifi());
						det.setClasifniv1(d.getClasifniv1());
						det.setClasifniv2(d.getClasifniv2());
						det.setClasifniv3(d.getClasifniv3());
						det.setClasifniv4(d.getClasifniv4());
						det.setClasifniv5(d.getClasifniv5());
						det.setClasifniv6(d.getClasifniv6()); 
						det.setSecFunc(""); 
						det.setClasif2n1(""); 
						det.setClasif2n2(""); 
						det.setClasif2n3(""); 
						det.setClasif2n4(""); 
						det.setClasif2n5(""); 
						det.setClasif2n6(""); 
						det.setIdClasif2(""); 
						if(validarNulo(d.getMonto())){
							det.setMonto(Double.valueOf(d.getMonto())); 	
						}else{
							det.setMonto(null);	
						}
	                    if(validarNulo(d.getMonto_mn())){
	                    	det.setMontoMn(Double.valueOf(d.getMonto_mn()));  	
						}else{
							det.setMontoMn(null); 	
						}	
	                    sumaMonto = sumaMonto+det.getMonto();
	                    sumaMontoMn = sumaMontoMn+det.getMontoMn();
						det.setDatoOri(d.getDato_ori());
						valorDet = true;		
					}
					listaIdClasif.add(d.getId_clasifi());
					listaDet09.add(det);
				}//fin del for				
			}	
			/**varificando idclasificar en el detalle**/			
			if(valorDet && listaDet09.size()>1){
				logger.info("Ingresando a verificar idClasificador: "); 
				Collections.sort(listaIdClasif);
				String idClasif = "";
				for(int j=0;j<listaIdClasif.size();j++){
					logger.info("verificar idClasificador: "+listaIdClasif.get(j)); 
					if(idClasif.equals(listaIdClasif.get(j))){ 
						valorDet = false;	
						mensaje = Constantes.COD_ID_CLASIFICADOR_DET09_REPETIDO+"/"+ 
						          Constantes.ID_CLASIFICADOR_DET09_REPETIDO;
						break;
					}else{
						idClasif = listaIdClasif.get(j);						
					}					
				}
			}
			/**verifacamos si el monto de la cabecera es igual al monto del detalle**/
			logger.info("Suma montoDetalle:  "+sumaMonto);
			logger.info("Suma montoMnDetalle:  "+sumaMontoMn);
			if(sumaMonto==i.getDmonto()){
			  if(sumaMontoMn==i.getDmontoMn()){
				  valorDet = true;	  
			  }else{
				  mensaje = Constantes.COD_MONTOMN_CABECERA_MONTOMN_DETALLE+"/"+
				            Constantes.MONTOMN_CABECERA_MONTOMN_DETALLE;
				  valorDet = false;  
			  }
			}else{
				mensaje = Constantes.COD_MONTO_CABECERA_MONTO_DETALLE+"/"+
				          Constantes.MONTO_CABECERA_MONTO_DETALLE;
				valorDet = false;	
			}
			
			/**GRABANDO EN INTF_NOT**/
			if(valorCab && valorDet){
				if(!validarNulo(notBean.getSecuencial())){ 
					mensaje = Constantes.COD_SECUENCIAL_INTF_NOT_NULO+"/"+
					          Constantes.SECUENCIAL_INTF_NOT_NULO;
				}else if(!validarNulo(notBean.getCorrelativ())){ 
					mensaje = Constantes.COD_CORRELATIVO_INTF_NOT_NULO+"/"+
					          Constantes.CORRELATIVO_INTF_NOT_NULO;
				}else if(!validarNulo(notBean.getNota())){ 
					mensaje = Constantes.COD_NOTA_INTF_NOT_NULO+"/"+
					          Constantes.NOTA_INTF_NOT_NULO;
				}else{								
					n.setSecuencial(notBean.getSecuencial());
					n.setCorrelativ(notBean.getCorrelativ());
					n.setNota(notBean.getNota());
					n.setDatoOri(notBean.getDato_ori());
					valorNot = true;		
				}				
			}
			if(valorCab && valorDet && valorNot){
				Map<String, Object> paramts = new HashMap<String, Object>();				
				paramts.put("intfCab", i);
				paramts.put("listaDet", listaDet09);				
				paramts.put("intfNot", n);	
				//validando campos de las interfases
				String mensajeID = validacionIngresoService.validarIngresosR(paramts);
				String[] msnId = mensajeID.split("/");
				if(CODIGO_VERIFICACION_OK.equals(msnId[0])) {
					ingresoDao.insertarIngresosRecaudado(paramts);						
				}else{
					mensaje = mensajeID;
				}	
			}			
		} catch (Exception e) {
			logger.info("Error al grabar datos de los ingresos Recaudado : "+e);		
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}finally{
			if(i!=null){
				i =null;			
			}
			if(listaDet09!=null){				
				listaDet09 = null;				
			}
			if(n!=null){			
				n= null;
			}
			if(det!=null){			
				det= null;
			}
			if(listaIdClasif!=null){			
				listaIdClasif= null;
			}
		}
		return mensaje;
	}
	
	
/*****INGRESOS DE DATOS RECAUDADO (I-R-ANULADO y ANULADO POR ERROR)*********************/	
	
	private  String  insertDatosIngresosRAnulado(String ciclo,String fase,Map<String, Object> params) throws Exception {
		logger.info("Ingresando a grabar datos de ingresos Recaudado anualcion y anulacion por error"); 
		String mensaje = CODIGO_VERIFICACION_OK;
		boolean valorCab = false;
		boolean valorDet =false;	
		IntfCab i = new IntfCab();
		List<IntfDet09> listaDet09 = null;
		List<String> listaIdClasif=null;
		IntfDet09 det = null;
		IntfNot n = null;
		double sumaMonto = 0.0;
		double sumaMontoMn = 0.0;
		try {
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");   
			@SuppressWarnings("unchecked")
			List<IntfDet09IngresoBean> detLista09 = (List<IntfDet09IngresoBean>) params.get("det");
		   /**GRABANDO EN INTF_CAB**/
			if(!validarNulo(cabBean.getSecuencial())){ 
				mensaje = Constantes.COD_SECUENCIAL_INTFCAB_NULO+"/"+
			    		   Constantes.SECUENCIAL_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getAno_eje())){ 
				mensaje = Constantes.COD_ANIO_EJE_INTFCAB_NULO+"/"+
			               Constantes.ANIO_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_ejec())){ 
				 mensaje = Constantes.COD_SEC_EJEC_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getCiclo())){ 
				 mensaje = Constantes.COD_CICLO_INTFCAB_NULO+"/"+
				           Constantes.CICLO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFase())){ 
				 mensaje = Constantes.COD_FASE_INTFCAB_NULO+"/"+
				           Constantes.FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getMes_eje())){ 
				 mensaje = Constantes.COD_MES_EJE_INTFCAB_NULO+"/"+
				           Constantes.MES_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCod_doc())){ 
				 mensaje = Constantes.COD_COD_DOC_INTFCAB_NULO+"/"+
				           Constantes.COD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSerie_doc())){ 
				mensaje = Constantes.COD_SERIE_DOC_INTFCAB_NULO+"/"+
				          Constantes.SERIE_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getNum_doc())){ 
				mensaje = Constantes.COD_NUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.NUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FEC_DOC_INTFCAB_NULO+"/"+
						  Constantes.FEC_DOC_INTFCAB_NULO;	
		    }else if(!FechasUtil.isFechaValida(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FECDOC_INTFCAB_NO_VALIDO+"/"+
						  Constantes.FECDOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getEstado())){ 
		    	mensaje = Constantes.COD_ESTADO_INTFCAB_NULO+"/"+	
		    			  Constantes.ESTADO_INTFCAB_NULO;
		    }else if(!validarNulo(cabBean.getUe_envio())){ 
				mensaje = Constantes.COD_UE_ENVIO_INTFCAB_NULO+"/"+	
				          Constantes.UE_ENVIO_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getUe_estado())){ 
				mensaje = Constantes.COD_UE_ESTADO_INTFCAB_NULO+"/"+
				          Constantes.UE_ESTADO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_exp())){ 
				mensaje = Constantes.COD_INTF_EXP_INTFCAB_NULO+"/"+
				          Constantes.INTF_EXP_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_fase())){ 
				mensaje = Constantes.COD_INTF_FASE_INTFCAB_NULO+"/"+
				          Constantes.INTF_FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_sec())){ 
				mensaje = Constantes.COD_INTF_SEC_INTFCAB_NULO+"/"+
						  Constantes.INTF_SEC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_cor())){ 
				mensaje = Constantes.COD_INTF_COR_INTFCAB_NULO+"/"+
						  Constantes.INTF_COR_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getEstado_reg())){ 
				mensaje = Constantes.COD_ESTADO_REG_INTFCAB_NULO+"/"+
				          Constantes.ESTADO_REG_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDato_ori())){ 
				mensaje = Constantes.COD_DATO_ORI_INTFCAB_NULO+"/"+	
				          Constantes.DATO_ORI_INTFCAB_NULO;	
			}else if(!cabBean.getFase().equals(fase)){  
				mensaje = Constantes.COD_FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO+"/"+
				          Constantes.FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO;
			}else if(!cabBean.getCiclo().equals(ciclo)){  
				mensaje = Constantes.COD_CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO+"/"+
				          Constantes.CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO;
			}else{								
				i.setSecuencial(cabBean.getSecuencial());
				i.setAnoEje(cabBean.getAno_eje());
				i.setSecEjec(cabBean.getSec_ejec());				
				i.setCiclo(cabBean.getCiclo());
				i.setFase(cabBean.getFase()); 
				i.setCodDoc(cabBean.getCod_doc());
				i.setSerieDoc(cabBean.getSerie_doc());
				i.setNumDoc(cabBean.getNum_doc());			
				//parseando la fechadoc
				logger.info("fecha de doc ingresaod:" +cabBean.getFec_doc()); 
				Date fechaDoc = FechasUtil.getFechaStringToDate(cabBean.getFec_doc());
				i.setFecDoc(fechaDoc);					
				i.setmFecha(null); 
				//fin de parsenado fechas
				i.setOrigen("");
				i.setFteFin("");				
				i.settPago(""); 
				i.settRecurs("");
				i.settCompro("");				
				i.setAnoCta("");
				i.setBanco("");
				i.setCtaCte("");				
				i.setAnoCta2("");
				i.setBanco2("");
				i.setCtaCte2("");				
				i.setMoneda("");				
			    i.settCambio(null);							
				i.setDcodDoc("");
				i.setDnumDoc("");			
				i.setDfecDoc(null);				
				i.setDnombre("");			
				i.setDmonto(null);			
			    i.setDmontoMn(null); 
			    i.setMesEje(cabBean.getMes_eje()); 
			    i.setEstado(cabBean.getEstado()); 
				i.setUeEnvio(cabBean.getUe_envio());
				i.setUeEstado(cabBean.getUe_estado());
				i.setIntfExp(cabBean.getIntf_exp());				
				i.setIntfFase(cabBean.getIntf_fase());
				i.setIntfSec(cabBean.getIntf_sec());
				i.setIntfCor(cabBean.getIntf_cor());					
				i.setEstadoReg(cabBean.getEstado_reg()); 
				i.setDatoOri(cabBean.getDato_ori());				
				valorCab = true;
			}				
			 /**GRABANDO EN INTF_DET09**/
			if(valorCab){
				listaIdClasif = new ArrayList<String>();
				listaDet09 = new ArrayList<IntfDet09>();
				for(IntfDet09IngresoBean d: detLista09){
					det = new IntfDet09();
					if(!validarNulo(d.getSecuencial())){ 
						mensaje = Constantes.COD_SECUENCIAL_INTF_DET09_NULO+"/"+
						          Constantes.SECUENCIAL_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getId_clasifi())){ 
						mensaje = Constantes.COD_ID_CLASIFI_INTF_DET09_NULO+"/"+
						          Constantes.ID_CLASIFI_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv1())){ 
						mensaje = Constantes.COD_CLASIFNIV1_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV1_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv2())){ 
						mensaje = Constantes.COD_CLASIFNIV2_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV2_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv3())){ 
						mensaje = Constantes.COD_CLASIFNIV3_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV3_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv4())){ 
						mensaje = Constantes.COD_CLASIFNIV4_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV4_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv5())){ 
						mensaje = Constantes.COD_CLASIFNIV5_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV5_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv6())){ 
						mensaje = Constantes.COD_CLASIFNIV6_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV6_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NO_VALIDO+"/"+
						          Constantes.MONTO_INTF_DET09_NO_VALIDO;
						break;
					}else if(!validarNegativo(d.getMonto())){ 
					    mensaje = Constantes.COD_MONTO_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_INTF_DET09_NO_POSITIVO;
					    break;
				    }else if(!validarNulo(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_MN_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_VALIDO+"/"+	
						          Constantes.MONTO_MN_INTF_DET09_NO_VALIDO;	
						break;
					}else if(!validarNegativo(d.getMonto_mn())){ 
					    mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_MN_INTF_DET09_NO_POSITIVO;
					    break;
				    }else{								
						det.setSecuencial(d.getSecuencial()); 
						det.setIdClasifi(d.getId_clasifi());
						det.setClasifniv1(d.getClasifniv1());
						det.setClasifniv2(d.getClasifniv2());
						det.setClasifniv3(d.getClasifniv3());
						det.setClasifniv4(d.getClasifniv4());
						det.setClasifniv5(d.getClasifniv5());
						det.setClasifniv6(d.getClasifniv6()); 
						det.setSecFunc(""); 
						det.setClasif2n1(""); 
						det.setClasif2n2(""); 
						det.setClasif2n3(""); 
						det.setClasif2n4(""); 
						det.setClasif2n5(""); 
						det.setClasif2n6(""); 
						det.setIdClasif2(""); 
						if(validarNulo(d.getMonto())){
							det.setMonto(Double.valueOf(d.getMonto())); 	
						}else{
							det.setMonto(null);	
						}
	                    if(validarNulo(d.getMonto_mn())){
	                    	det.setMontoMn(Double.valueOf(d.getMonto_mn()));  	
						}else{
							det.setMontoMn(null); 	
						}
	                    sumaMonto = sumaMonto +det.getMonto();
	                    sumaMontoMn = sumaMontoMn +det.getMontoMn();
						det.setDatoOri(d.getDato_ori());
						valorDet = true;		
					}
					 listaIdClasif.add(d.getId_clasifi());
					 listaDet09.add(det);
				}//fin del for				
			}	
			/**varificando idclasificar en el detalle**/			
			if(valorDet && listaDet09.size()>1){
				logger.info("Ingresando a verificar idClasificador: "); 
				Collections.sort(listaIdClasif);
				String idClasif = "";
				for(int j=0;j<listaIdClasif.size();j++){
					logger.info("verificar idClasificador: "+listaIdClasif.get(j)); 
					if(idClasif.equals(listaIdClasif.get(j))){ 
						valorDet = false;	
						mensaje = Constantes.COD_ID_CLASIFICADOR_DET09_REPETIDO+"/"+ 
						          Constantes.ID_CLASIFICADOR_DET09_REPETIDO; 
						break;
					}else{
						idClasif = listaIdClasif.get(j);						
					}					
				}
			}			
			if(valorCab && valorDet){
				Map<String, Object> paramts = new HashMap<String, Object>();				
				paramts.put("intfCab", i);
				paramts.put("listaDet", listaDet09);	
				paramts.put("montoTotal", sumaMonto);
				paramts.put("montoMnTotal", sumaMontoMn);
				//validando campos de las interfases
				String mensajeID = validacionIngresoService.validarIngresosRAnulXError(paramts);
				String[] msnId = mensajeID.split("/");
				if(CODIGO_VERIFICACION_OK.equals(msnId[0])) {
					ingresoDao.insertarIngresosRecaudado(paramts);						
				}else{
					mensaje = mensajeID;
				}	
			}			
		} catch (Exception e) {
			logger.info("Error al grabar datos de los ingresos Recaudado Anulado: "+e);		
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}finally{
			if(i!=null){
				i =null;			
			}
			if(listaDet09!=null){				
				listaDet09 = null;				
			}
			if(n!=null){			
				n= null;
			}
			if(det!=null){			
				det= null;
			}
			if(listaIdClasif!=null){			
				listaIdClasif= null;
			}
		}
		return mensaje;
	}
	
	
   /*****INGRESOS DE DATOS RECAUDADO (I-R-REBAJA)*********************/	
	
	private  String  insertDatosIngresosRRebaja(String ciclo,String fase,Map<String, Object> params) throws Exception {
		logger.info("Ingresando a grabar datos de ingresos Recaudado rebaja"); 
		String mensaje = CODIGO_VERIFICACION_OK;
		boolean valorCab = false;
		boolean valorDet =false;	
		IntfCab i = new IntfCab();
		List<IntfDet09> listaDet09 = null;
		List<String> listaIdClasif=null;		
		IntfDet09 det = null;
		IntfNot n = null;
		double sumaMonto = 0.0;
		double sumaMontoMn = 0.0;
		try {	
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");   
			@SuppressWarnings("unchecked")
			List<IntfDet09IngresoBean> detLista09 = (List<IntfDet09IngresoBean>) params.get("det");			
		   /**GRABANDO EN INTF_CAB**/	
			if(!validarNulo(cabBean.getSecuencial())){ 
				mensaje = Constantes.COD_SECUENCIAL_INTFCAB_NULO+"/"+
			    		   Constantes.SECUENCIAL_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getAno_eje())){ 
				mensaje = Constantes.COD_ANIO_EJE_INTFCAB_NULO+"/"+
			               Constantes.ANIO_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_ejec())){ 
				 mensaje = Constantes.COD_SEC_EJEC_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getCiclo())){ 
				 mensaje = Constantes.COD_CICLO_INTFCAB_NULO+"/"+
				           Constantes.CICLO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFase())){ 
				 mensaje = Constantes.COD_FASE_INTFCAB_NULO+"/"+
				           Constantes.FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getMes_eje())){ 
				 mensaje = Constantes.COD_MES_EJE_INTFCAB_NULO+"/"+
				           Constantes.MES_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCod_doc())){ 
				 mensaje = Constantes.COD_COD_DOC_INTFCAB_NULO+"/"+
				           Constantes.COD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSerie_doc())){ 
				mensaje = Constantes.COD_SERIE_DOC_INTFCAB_NULO+"/"+
				          Constantes.SERIE_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getNum_doc())){ 
				mensaje = Constantes.COD_NUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.NUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FEC_DOC_INTFCAB_NULO+"/"+
						  Constantes.FEC_DOC_INTFCAB_NULO;	
		    }else if(!FechasUtil.isFechaValida(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FECDOC_INTFCAB_NO_VALIDO+"/"+
						  Constantes.FECDOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getEstado())){ 
		    	mensaje = Constantes.COD_ESTADO_INTFCAB_NULO+"/"+	
		    			  Constantes.ESTADO_INTFCAB_NULO;
		    }else if(!validarNulo(cabBean.getUe_envio())){ 
				mensaje = Constantes.COD_UE_ENVIO_INTFCAB_NULO+"/"+	
				          Constantes.UE_ENVIO_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getUe_estado())){ 
				mensaje = Constantes.COD_UE_ESTADO_INTFCAB_NULO+"/"+
				          Constantes.UE_ESTADO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_exp())){ 
				mensaje = Constantes.COD_INTF_EXP_INTFCAB_NULO+"/"+
				          Constantes.INTF_EXP_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_fase())){ 
				mensaje = Constantes.COD_INTF_FASE_INTFCAB_NULO+"/"+
				          Constantes.INTF_FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_sec())){ 
				mensaje = Constantes.COD_INTF_SEC_INTFCAB_NULO+"/"+
						  Constantes.INTF_SEC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_cor())){ 
				mensaje = Constantes.COD_INTF_COR_INTFCAB_NULO+"/"+
						  Constantes.INTF_COR_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getEstado_reg())){ 
				mensaje = Constantes.COD_ESTADO_REG_INTFCAB_NULO+"/"+
				          Constantes.ESTADO_REG_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDato_ori())){ 
				mensaje = Constantes.COD_DATO_ORI_INTFCAB_NULO+"/"+	
				          Constantes.DATO_ORI_INTFCAB_NULO;	
			}else if(!cabBean.getFase().equals(fase)){  
				mensaje = Constantes.COD_FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO+"/"+
				          Constantes.FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO;
			}else if(!cabBean.getCiclo().equals(ciclo)){  
				mensaje = Constantes.COD_CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO+"/"+
				          Constantes.CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO;
			}else{								
				i.setSecuencial(cabBean.getSecuencial());
				i.setAnoEje(cabBean.getAno_eje());
				i.setSecEjec(cabBean.getSec_ejec());				
				i.setCiclo(cabBean.getCiclo());
				i.setFase(cabBean.getFase()); 
				i.setCodDoc(cabBean.getCod_doc());
				i.setSerieDoc(cabBean.getSerie_doc());
				i.setNumDoc(cabBean.getNum_doc());			
				//parseando la fechadoc
				logger.info("fecha de doc ingresaod:" +cabBean.getFec_doc()); 
				Date fechaDoc = FechasUtil.getFechaStringToDate(cabBean.getFec_doc());
				i.setFecDoc(fechaDoc);					
				i.setmFecha(null); 
				//fin de parsenado fechas
				i.setOrigen("");
				i.setFteFin("");				
				i.settPago(""); 
				i.settRecurs("");
				i.settCompro("");				
				i.setAnoCta("");
				i.setBanco("");
				i.setCtaCte("");				
				i.setAnoCta2("");
				i.setBanco2("");
				i.setCtaCte2("");				
				i.setMoneda("");				
			    i.settCambio(null);							
				i.setDcodDoc("");
				i.setDnumDoc("");			
				i.setDfecDoc(null);				
				i.setDnombre("");			
				i.setDmonto(null);			
			    i.setDmontoMn(null); 
			    i.setMesEje(cabBean.getMes_eje()); 
			    i.setEstado(cabBean.getEstado()); 
				i.setUeEnvio(cabBean.getUe_envio());
				i.setUeEstado(cabBean.getUe_estado());
				i.setIntfExp(cabBean.getIntf_exp());				
				i.setIntfFase(cabBean.getIntf_fase());
				i.setIntfSec(cabBean.getIntf_sec());
				i.setIntfCor(cabBean.getIntf_cor());					
				i.setEstadoReg(cabBean.getEstado_reg()); 
				i.setDatoOri(cabBean.getDato_ori());				
				valorCab = true;
			}				
			 /**GRABANDO EN INTF_DET09**/
			if(valorCab){
				listaIdClasif = new ArrayList<String>();
				listaDet09 = new ArrayList<IntfDet09>();
				for(IntfDet09IngresoBean d: detLista09){
					det = new IntfDet09();
					if(!validarNulo(d.getSecuencial())){ 
						mensaje = Constantes.COD_SECUENCIAL_INTF_DET09_NULO+"/"+
						          Constantes.SECUENCIAL_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getId_clasifi())){ 
						mensaje = Constantes.COD_ID_CLASIFI_INTF_DET09_NULO+"/"+
						          Constantes.ID_CLASIFI_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv1())){ 
						mensaje = Constantes.COD_CLASIFNIV1_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV1_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv2())){ 
						mensaje = Constantes.COD_CLASIFNIV2_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV2_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv3())){ 
						mensaje = Constantes.COD_CLASIFNIV3_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV3_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv4())){ 
						mensaje = Constantes.COD_CLASIFNIV4_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV4_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv5())){ 
						mensaje = Constantes.COD_CLASIFNIV5_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV5_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv6())){ 
						mensaje = Constantes.COD_CLASIFNIV6_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV6_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NO_VALIDO+"/"+
						          Constantes.MONTO_INTF_DET09_NO_VALIDO;
						break;
					}else if(!validarNegativo(d.getMonto())){ 
					    mensaje = Constantes.COD_MONTO_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_INTF_DET09_NO_POSITIVO;
					    break;
				    }else if(!validarNulo(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_MN_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_VALIDO+"/"+	
						          Constantes.MONTO_MN_INTF_DET09_NO_VALIDO;	
						break;
					}else if(!validarNegativo(d.getMonto_mn())){ 
					    mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_MN_INTF_DET09_NO_POSITIVO;
					    break;
				    }else{								
						det.setSecuencial(d.getSecuencial()); 
						det.setIdClasifi(d.getId_clasifi());
						det.setClasifniv1(d.getClasifniv1());
						det.setClasifniv2(d.getClasifniv2());
						det.setClasifniv3(d.getClasifniv3());
						det.setClasifniv4(d.getClasifniv4());
						det.setClasifniv5(d.getClasifniv5());
						det.setClasifniv6(d.getClasifniv6()); 
						det.setSecFunc(""); 
						det.setClasif2n1(""); 
						det.setClasif2n2(""); 
						det.setClasif2n3(""); 
						det.setClasif2n4(""); 
						det.setClasif2n5(""); 
						det.setClasif2n6(""); 
						det.setIdClasif2(""); 
						if(validarNulo(d.getMonto())){
							det.setMonto(Double.valueOf(d.getMonto())); 	
						}else{
							det.setMonto(null);	
						}
	                    if(validarNulo(d.getMonto_mn())){
	                    	det.setMontoMn(Double.valueOf(d.getMonto_mn()));  	
						}else{
							det.setMontoMn(null); 	
						}
	                    sumaMonto = sumaMonto +det.getMonto();
	                    sumaMontoMn = sumaMontoMn +det.getMontoMn();
						det.setDatoOri(d.getDato_ori());
						valorDet = true;		
					}
					 listaIdClasif.add(d.getId_clasifi());
					 listaDet09.add(det);
				}//fin del for				
			}
			/**varificando idclasificar en el detalle**/			
			if(valorDet && listaDet09.size()>1){
				logger.info("Ingresando a verificar idClasificador: "); 
				Collections.sort(listaIdClasif);
				String idClasif = "";
				for(int j=0;j<listaIdClasif.size();j++){
					logger.info("verificar idClasificador: "+listaIdClasif.get(j)); 
					if(idClasif.equals(listaIdClasif.get(j))){ 
						valorDet = false;	
						mensaje = Constantes.COD_ID_CLASIFICADOR_DET09_REPETIDO+"/"+
						          Constantes.ID_CLASIFICADOR_DET09_REPETIDO; 
						break;
					}else{
						idClasif = listaIdClasif.get(j);						
					}					
				}
			}			
			if(valorCab && valorDet){
				Map<String, Object> paramts = new HashMap<String, Object>();				
				paramts.put("intfCab", i);
				paramts.put("listaDet", listaDet09);
				paramts.put("montoTotal", sumaMonto);
				paramts.put("montoMnTotal", sumaMontoMn);
				//validando campos de las interfases
				String mensajeID = validacionIngresoService.validarIngresosRRebaja(paramts);
				String[] msnId = mensajeID.split("/");
				if(CODIGO_VERIFICACION_OK.equals(msnId[0])) {
					ingresoDao.insertarIngresosRecaudado(paramts);						
				}else{
					mensaje = mensajeID;
				}	
			}			
		} catch (Exception e) {
			logger.info("Error al grabar datos de los ingresos Recaudado Anulado: "+e);		
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}finally{
			if(i!=null){
				i =null;			
			}
			if(listaDet09!=null){				
				listaDet09 = null;				
			}
			if(n!=null){			
				n= null;
			}
			if(det!=null){			
				det= null;
			}
			if(listaIdClasif!=null){			
				listaIdClasif= null;
			}
		}
		return mensaje;
	}
	
	
    /*****INGRESOS DE DATOS RECAUDADO (I-R-DEVOLUCION)*********************/	
	
	private  String  insertDatosIngresosRDevolucion(String ciclo,String fase,Map<String, Object> params) throws Exception {
		logger.info("Ingresando a grabar datos de ingresos Recaudado devolucion"); 
		String mensaje = CODIGO_VERIFICACION_OK+"/"+"";
		boolean valorCab = false;
		boolean valorDet =false;	
		IntfCab i = new IntfCab();
		List<IntfDet09> listaDet09 = null;
		List<String> listaIdClasif=null;
		IntfDet09 det = null;
		IntfNot n = null;
		double sumaMonto = 0.0;
		double sumaMontoMn = 0.0;
		try {
			//Datos
			IntfCabIngresoBean cabBean = (IntfCabIngresoBean) params.get("cab");   
			@SuppressWarnings("unchecked")
			List<IntfDet09IngresoBean> detLista09 = (List<IntfDet09IngresoBean>) params.get("det");			
		   /**GRABANDO EN INTF_CAB**/
			if(!validarNulo(cabBean.getSecuencial())){ 
				mensaje = Constantes.COD_SECUENCIAL_INTFCAB_NULO+"/"+
			    		   Constantes.SECUENCIAL_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getAno_eje())){ 
				mensaje = Constantes.COD_ANIO_EJE_INTFCAB_NULO+"/"+
			               Constantes.ANIO_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSec_ejec())){ 
				 mensaje = Constantes.COD_SEC_EJEC_INTFCAB_NULO+"/"+
						   Constantes.SEC_EJEC_INTFCAB_NULO;		
			}else if(!validarNulo(cabBean.getCiclo())){ 
				 mensaje = Constantes.COD_CICLO_INTFCAB_NULO+"/"+
				           Constantes.CICLO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getFase())){ 
				 mensaje = Constantes.COD_FASE_INTFCAB_NULO+"/"+
				           Constantes.FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getMes_eje())){ 
				 mensaje = Constantes.COD_MES_EJE_INTFCAB_NULO+"/"+
				           Constantes.MES_EJE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getCod_doc())){ 
				 mensaje = Constantes.COD_COD_DOC_INTFCAB_NULO+"/"+
				           Constantes.COD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getSerie_doc())){ 
				mensaje = Constantes.COD_SERIE_DOC_INTFCAB_NULO+"/"+
				          Constantes.SERIE_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getNum_doc())){ 
				mensaje = Constantes.COD_NUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.NUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FEC_DOC_INTFCAB_NULO+"/"+
						  Constantes.FEC_DOC_INTFCAB_NULO;	
		    }else if(!FechasUtil.isFechaValida(cabBean.getFec_doc())){ 
				mensaje = Constantes.COD_FECDOC_INTFCAB_NO_VALIDO+"/"+
						  Constantes.FECDOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getDcod_doc())){ 
				mensaje = Constantes.COD_DCOD_DOC_INTFCAB_NULO+"/"+
				          Constantes.DCOD_DOC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDnum_doc())){ 
				mensaje = Constantes.COD_DNUM_DOC_INTFCAB_NULO+"/"+
				          Constantes.DNUM_DOC_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getDfec_doc())){ 
				mensaje = Constantes.COD_DFEC_DOC_INTFCAB_NULO+"/"+	
				          Constantes.DFEC_DOC_INTFCAB_NULO;
			}else if(!FechasUtil.isFechaValida(cabBean.getDfec_doc())){ 
				mensaje = Constantes.COD_DFEC_DOC_INTFCAB_NO_VALIDO+"/"+
				          Constantes.DFEC_DOC_INTFCAB_NO_VALIDO;
		    }else if(!validarNulo(cabBean.getDnombre())){ 
		    	mensaje = Constantes.COD_DNOMBRE_INTFCAB_NULO+"/"+
		    	          Constantes.DNOMBRE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDmonto())){ 
				mensaje = Constantes.COD_DMONTO_INTFCAB_NULO+"/"+
				          Constantes.DMONTO_INTFCAB_NULO;
			}else if(!esDecimal(cabBean.getDmonto())){ 
				mensaje = Constantes.COD_DMONTO_INTFCAB_NO_VALIDO+"/"+	
				          Constantes.DMONTO_INTFCAB_NO_VALIDO;
			}else if(!validarNegativo(cabBean.getDmonto())){ 
				mensaje = Constantes.COD_DMONTO_INTFCAB_NO_POSITIVO+"/"+
				          Constantes.DMONTO_INTFCAB_NO_POSITIVO;
		    }else if(!validarNulo(cabBean.getDmonto_mn())){ 
		    	mensaje = Constantes.COD_DMONTO_MN_INTFCAB_NULO+"/"+
		    	          Constantes.DMONTO_MN_INTFCAB_NULO;
			}else if(!esDecimal(cabBean.getDmonto_mn())){ 
				mensaje = Constantes.COD_DMONTO_MN_INTFCAB_NO_VALIDO+"/"+
				          Constantes.DMONTO_MN_INTFCAB_NO_VALIDO;
			}else if(!validarNegativo(cabBean.getDmonto_mn())){ 
				mensaje = Constantes.COD_DMONTO_MN_INTFCAB_NO_POSITIVO+"/"+
				          Constantes.DMONTO_MN_INTFCAB_NO_POSITIVO;
		    }else if(!validarNulo(cabBean.getEstado())){ 
		    	mensaje = Constantes.COD_ESTADO_INTFCAB_NULO+"/"+	
		    			  Constantes.ESTADO_INTFCAB_NULO;
		    }else if(!validarNulo(cabBean.getUe_envio())){ 
				mensaje = Constantes.COD_UE_ENVIO_INTFCAB_NULO+"/"+	
				          Constantes.UE_ENVIO_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getUe_estado())){ 
				mensaje = Constantes.COD_UE_ESTADO_INTFCAB_NULO+"/"+
				          Constantes.UE_ESTADO_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_exp())){ 
				mensaje = Constantes.COD_INTF_EXP_INTFCAB_NULO+"/"+
				          Constantes.INTF_EXP_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_fase())){ 
				mensaje = Constantes.COD_INTF_FASE_INTFCAB_NULO+"/"+
				          Constantes.INTF_FASE_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_sec())){ 
				mensaje = Constantes.COD_INTF_SEC_INTFCAB_NULO+"/"+
						  Constantes.INTF_SEC_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getIntf_cor())){ 
				mensaje = Constantes.COD_INTF_COR_INTFCAB_NULO+"/"+
						  Constantes.INTF_COR_INTFCAB_NULO;	
			}else if(!validarNulo(cabBean.getEstado_reg())){ 
				mensaje = Constantes.COD_ESTADO_REG_INTFCAB_NULO+"/"+
				          Constantes.ESTADO_REG_INTFCAB_NULO;
			}else if(!validarNulo(cabBean.getDato_ori())){ 
				mensaje = Constantes.COD_DATO_ORI_INTFCAB_NULO+"/"+	
				          Constantes.DATO_ORI_INTFCAB_NULO;	
			}else if(!cabBean.getFase().equals(fase)){  
				mensaje = Constantes.COD_FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO+"/"+
				          Constantes.FASE_INTFCAB_DIFERENTE_FASE_PARAMETRO;
			}else if(!cabBean.getCiclo().equals(ciclo)){  
				mensaje = Constantes.COD_CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO+"/"+
				          Constantes.CICLO_INTFCAB_DIFERENTE_CICLO_PARAMETRO;
			}else{								
				i.setSecuencial(cabBean.getSecuencial());
				i.setAnoEje(cabBean.getAno_eje());
				i.setSecEjec(cabBean.getSec_ejec());				
				i.setCiclo(cabBean.getCiclo());
				i.setFase(cabBean.getFase()); 
				i.setCodDoc(cabBean.getCod_doc());
				i.setSerieDoc(cabBean.getSerie_doc());
				i.setNumDoc(cabBean.getNum_doc());			
				//parseando la fechadoc
				logger.info("fecha de doc ingresaod:" +cabBean.getFec_doc()); 
				Date fechaDoc = FechasUtil.getFechaStringToDate(cabBean.getFec_doc());
				i.setFecDoc(fechaDoc);					
				i.setmFecha(null); 
				
				i.setOrigen("");
				i.setFteFin("");				
				i.settPago(""); 
				i.settRecurs("");
				i.settCompro("");				
				i.setAnoCta("");
				i.setBanco("");
				i.setCtaCte("");				
				i.setAnoCta2("");
				i.setBanco2("");
				i.setCtaCte2("");				
				i.setMoneda("");				
			    i.settCambio(null);	
			    
			    i.setDcodDoc(cabBean.getDcod_doc());
				i.setDnumDoc(cabBean.getDnum_doc());
				//parseando fechas
				Date dFechaDoc = FechasUtil.getFechaStringToDate(cabBean.getDfec_doc());
				logger.info("Dfecha de documento B :"+dFechaDoc);
				i.setDfecDoc(dFechaDoc);				
				i.setDnombre(cabBean.getDnombre());
				
				if(validarNulo(cabBean.getDmonto())){ 
					i.setDmonto(Double.valueOf(cabBean.getDmonto())); 	
				}else{
					i.setDmonto(null); 		
				}
				if(validarNulo(cabBean.getDmonto_mn())){ 
					i.setDmontoMn(Double.valueOf(cabBean.getDmonto_mn())); 	
				}else{
					i.setDmontoMn(null); 		
				}			    
				 
			    i.setMesEje(cabBean.getMes_eje()); 
			    i.setEstado(cabBean.getEstado()); 
				i.setUeEnvio(cabBean.getUe_envio());
				i.setUeEstado(cabBean.getUe_estado());
				i.setIntfExp(cabBean.getIntf_exp());				
				i.setIntfFase(cabBean.getIntf_fase());
				i.setIntfSec(cabBean.getIntf_sec());
				i.setIntfCor(cabBean.getIntf_cor());					
				i.setEstadoReg(cabBean.getEstado_reg()); 
				i.setDatoOri(cabBean.getDato_ori());				
				valorCab = true;
			}				
			 /**GRABANDO EN INTF_DET09**/
			if(valorCab){
				listaIdClasif = new ArrayList<String>();
				listaDet09 = new ArrayList<IntfDet09>();
				for(IntfDet09IngresoBean d: detLista09){
					det = new IntfDet09();
					if(!validarNulo(d.getSecuencial())){ 
						mensaje = Constantes.COD_SECUENCIAL_INTF_DET09_NULO+"/"+
						          Constantes.SECUENCIAL_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getId_clasifi())){ 
						mensaje = Constantes.COD_ID_CLASIFI_INTF_DET09_NULO+"/"+
						          Constantes.ID_CLASIFI_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv1())){ 
						mensaje = Constantes.COD_CLASIFNIV1_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV1_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv2())){ 
						mensaje = Constantes.COD_CLASIFNIV2_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV2_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv3())){ 
						mensaje = Constantes.COD_CLASIFNIV3_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV3_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv4())){ 
						mensaje = Constantes.COD_CLASIFNIV4_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV4_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv5())){ 
						mensaje = Constantes.COD_CLASIFNIV5_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV5_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getClasifniv6())){ 
						mensaje = Constantes.COD_CLASIFNIV6_INTF_DET09_NULO+"/"+
						          Constantes.CLASIFNIV6_INTF_DET09_NULO;
						break;
					}else if(!validarNulo(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto())){ 
						mensaje = Constantes.COD_MONTO_INTF_DET09_NO_VALIDO+"/"+
						          Constantes.MONTO_INTF_DET09_NO_VALIDO;
						break;
					}else if(!validarNegativo(d.getMonto())){ 
					    mensaje = Constantes.COD_MONTO_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_INTF_DET09_NO_POSITIVO;
					    break;
				    }else if(!validarNulo(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NULO+"/"+
						          Constantes.MONTO_MN_INTF_DET09_NULO;
						break;
					}else if(!esDecimal(d.getMonto_mn())){ 
						mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_VALIDO+"/"+	
						          Constantes.MONTO_MN_INTF_DET09_NO_VALIDO;	
						break;
					}else if(!validarNegativo(d.getMonto_mn())){ 
					    mensaje = Constantes.COD_MONTO_MN_INTF_DET09_NO_POSITIVO+"/"+
					              Constantes.MONTO_MN_INTF_DET09_NO_POSITIVO;
					    break;
				    }else{								
						det.setSecuencial(d.getSecuencial()); 
						det.setIdClasifi(d.getId_clasifi());
						det.setClasifniv1(d.getClasifniv1());
						det.setClasifniv2(d.getClasifniv2());
						det.setClasifniv3(d.getClasifniv3());
						det.setClasifniv4(d.getClasifniv4());
						det.setClasifniv5(d.getClasifniv5());
						det.setClasifniv6(d.getClasifniv6()); 
						det.setSecFunc(""); 
						det.setClasif2n1(""); 
						det.setClasif2n2(""); 
						det.setClasif2n3(""); 
						det.setClasif2n4(""); 
						det.setClasif2n5(""); 
						det.setClasif2n6(""); 
						det.setIdClasif2(""); 
						if(validarNulo(d.getMonto())){
							det.setMonto(Double.valueOf(d.getMonto())); 	
						}else{
							det.setMonto(null);	
						}
	                    if(validarNulo(d.getMonto_mn())){
	                    	det.setMontoMn(Double.valueOf(d.getMonto_mn()));  	
						}else{
							det.setMontoMn(null); 	
						}	
	                    sumaMonto = sumaMonto +det.getMonto();
	                    sumaMontoMn = sumaMontoMn +det.getMontoMn();
						det.setDatoOri(d.getDato_ori());
						valorDet = true;		
					}
					listaIdClasif.add(d.getId_clasifi());
					listaDet09.add(det);
				}//fin del for		
			}
			/**varificando idclasificar en el detalle**/			
			if(valorDet && listaDet09.size()>1){
				logger.info("Ingresando a verificar idClasificador: "); 
				Collections.sort(listaIdClasif);
				String idClasif = "";
				for(int j=0;j<listaIdClasif.size();j++){
					logger.info("verificar idClasificador: "+listaIdClasif.get(j)); 
					if(idClasif.equals(listaIdClasif.get(j))){ 
						valorDet = false;	
						mensaje = Constantes.COD_ID_CLASIFICADOR_DET09_REPETIDO+"/"+
						          Constantes.ID_CLASIFICADOR_DET09_REPETIDO;
						break;
					}else{
						idClasif = listaIdClasif.get(j);						
					}					
				}
			}		
			if(valorCab && valorDet){
				Map<String, Object> paramts = new HashMap<String, Object>();				
				paramts.put("intfCab", i);
				paramts.put("listaDet", listaDet09);	
				paramts.put("montoTotal", sumaMonto);
				paramts.put("montoMnTotal", sumaMontoMn);
				//validando campos de las interfases
				String mensajeID = validacionIngresoService.validarIngresosRDevolucion(paramts);
				String[] msnId = mensajeID.split("/");
				if(CODIGO_VERIFICACION_OK.equals(msnId[0])) {
					ingresoDao.insertarIngresosRecaudado(paramts);						
				}else{
					mensaje = mensajeID;
				}	
			}			
		} catch (Exception e) {
			logger.info("Error al grabar datos de los ingresos Recaudado Devolucion: "+e);		
			mensaje= CODIGO_VERIFICACION_ERROR+"/"+"";
		}finally{
			if(i!=null){
				i =null;			
			}
			if(listaDet09!=null){				
				listaDet09 = null;				
			}
			if(n!=null){			
				n= null;
			}
			if(det!=null){			
				det= null;
			}
			if(listaIdClasif!=null){			
				listaIdClasif= null;
			}
		}
		return mensaje;
	}	
	
	
	private boolean validarNulo(String cadena){		
	  boolean valor = true;
	  if(StringUtils.isBlank(cadena)){
		valor =false; 		
	  }
	  return valor;	  
	}

    private boolean validarNegativo(String cadena){
      boolean valor = true;
   	  if(StringUtils.isNoneBlank(cadena)){ 
   		double monto = Double.valueOf(cadena);
   		if(monto>=0.0){
   			logger.info("Valor positivo:");
   		  valor =false; 		
   		}else{
   			logger.info("Valor negativo:");
   			valor = true;
   		}   		
   	  }
   	  return valor;	 
    }

    public boolean esDecimal(String cadena)
    {
	    try
	    {
	      Double.parseDouble(cadena);
	      logger.info("Valor si es deciaml"); 
	      return true;
	    }
	    catch(NumberFormatException nfe)
	    {
	      logger.info("Valor no es deciaml"); 
	      return false;
	    }
    }
	
	

}
